python-watcher 12.0.0.0rc1__tar.gz → 12.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 (876) hide show
  1. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/.zuul.yaml +1 -0
  2. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/AUTHORS +4 -0
  3. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/ChangeLog +16 -0
  4. python_watcher-12.1.0/PKG-INFO +97 -0
  5. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/lib/watcher +13 -0
  6. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/plugin.sh +3 -0
  7. python_watcher-12.1.0/python_watcher.egg-info/PKG-INFO +97 -0
  8. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/python_watcher.egg-info/SOURCES.txt +1 -0
  9. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/python_watcher.egg-info/entry_points.txt +0 -1
  10. python_watcher-12.1.0/python_watcher.egg-info/pbr.json +1 -0
  11. python_watcher-12.1.0/releasenotes/notes/bug-2112187-763bae283e0b736d.yaml +47 -0
  12. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/tox.ini +1 -1
  13. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/volume_migration.py +26 -72
  14. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/context.py +3 -0
  15. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/keystone_helper.py +0 -34
  16. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/utils.py +1 -7
  17. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/env.py +2 -2
  18. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/api.py +102 -118
  19. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/migration.py +3 -3
  20. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/models.py +0 -8
  21. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/audit/continuous.py +1 -1
  22. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/zone_migration.py +25 -30
  23. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/test_volume_migration.py +30 -39
  24. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/base.py +13 -11
  25. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/audit/test_audit_handlers.py +7 -7
  26. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_zone_migration.py +4 -1
  27. python-watcher-12.0.0.0rc1/PKG-INFO +0 -54
  28. python-watcher-12.0.0.0rc1/python_watcher.egg-info/PKG-INFO +0 -54
  29. python-watcher-12.0.0.0rc1/python_watcher.egg-info/pbr.json +0 -1
  30. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/.coveragerc +0 -0
  31. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/.mailmap +0 -0
  32. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/.stestr.conf +0 -0
  33. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/CONTRIBUTING.rst +0 -0
  34. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/HACKING.rst +0 -0
  35. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/LICENSE +0 -0
  36. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/README.rst +0 -0
  37. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/conf.py +0 -0
  38. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/index.rst +0 -0
  39. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/parameters.yaml +0 -0
  40. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actionplan-cancel-request-cancelling.json +0 -0
  41. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actionplan-cancel-request-pending.json +0 -0
  42. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actionplan-list-detailed-response.json +0 -0
  43. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actionplan-list-response.json +0 -0
  44. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actionplan-show-response.json +0 -0
  45. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actionplan-start-response.json +0 -0
  46. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actions-list-detailed-response.json +0 -0
  47. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actions-list-response.json +0 -0
  48. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/actions-show-response.json +0 -0
  49. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/api-root-response.json +0 -0
  50. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/api-v1-root-response.json +0 -0
  51. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-cancel-request.json +0 -0
  52. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-cancel-response.json +0 -0
  53. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-create-request-continuous.json +0 -0
  54. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-create-request-oneshot.json +0 -0
  55. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-create-response.json +0 -0
  56. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-list-detailed-response.json +0 -0
  57. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-list-response.json +0 -0
  58. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-show-response.json +0 -0
  59. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-update-request.json +0 -0
  60. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audit-update-response.json +0 -0
  61. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-create-request-full.json +0 -0
  62. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-create-request-minimal.json +0 -0
  63. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-create-response.json +0 -0
  64. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-list-detailed-response.json +0 -0
  65. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-list-response.json +0 -0
  66. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-show-response.json +0 -0
  67. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-update-request.json +0 -0
  68. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/audittemplate-update-response.json +0 -0
  69. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/datamodel-list-response.json +0 -0
  70. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/goal-list-response.json +0 -0
  71. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/goal-show-response.json +0 -0
  72. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/scoring_engine-list-detailed-response.json +0 -0
  73. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/scoring_engine-list-response.json +0 -0
  74. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/scoring_engine-show-response.json +0 -0
  75. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/service-list-detailed-response.json +0 -0
  76. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/service-list-response.json +0 -0
  77. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/service-show-response.json +0 -0
  78. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/strategy-list-detailed-response.json +0 -0
  79. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/strategy-list-response.json +0 -0
  80. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/strategy-show-response.json +0 -0
  81. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/samples/strategy-state-response.json +0 -0
  82. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-actionplans.inc +0 -0
  83. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-actions.inc +0 -0
  84. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-audits.inc +0 -0
  85. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-audittemplates.inc +0 -0
  86. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-datamodel.inc +0 -0
  87. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-goals.inc +0 -0
  88. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-scoring_engines.inc +0 -0
  89. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-services.inc +0 -0
  90. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-strategies.inc +0 -0
  91. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-v1-webhooks.inc +0 -0
  92. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/api-ref/source/watcher-api-versions.inc +0 -0
  93. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/files/apache-watcher-api.template +0 -0
  94. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/local.conf.compute +0 -0
  95. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/local.conf.controller +0 -0
  96. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/override-defaults +0 -0
  97. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/settings +0 -0
  98. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/upgrade/from_rocky/upgrade-watcher +0 -0
  99. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/upgrade/resources.sh +0 -0
  100. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/upgrade/settings +0 -0
  101. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/upgrade/shutdown.sh +0 -0
  102. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/devstack/upgrade/upgrade.sh +0 -0
  103. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/ext/__init__.py +0 -0
  104. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/ext/term.py +0 -0
  105. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/ext/versioned_notifications.py +0 -0
  106. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-cancel-end.json +0 -0
  107. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-cancel-error.json +0 -0
  108. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-cancel-start.json +0 -0
  109. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-create.json +0 -0
  110. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-delete.json +0 -0
  111. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-execution-end.json +0 -0
  112. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-execution-error.json +0 -0
  113. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-execution-start.json +0 -0
  114. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action-update.json +0 -0
  115. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-cancel-end.json +0 -0
  116. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-cancel-error.json +0 -0
  117. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-cancel-start.json +0 -0
  118. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-create.json +0 -0
  119. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-delete.json +0 -0
  120. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-execution-end.json +0 -0
  121. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-execution-error.json +0 -0
  122. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-execution-start.json +0 -0
  123. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/action_plan-update.json +0 -0
  124. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-create.json +0 -0
  125. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-delete.json +0 -0
  126. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-planner-end.json +0 -0
  127. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-planner-error.json +0 -0
  128. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-planner-start.json +0 -0
  129. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-strategy-end.json +0 -0
  130. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-strategy-error.json +0 -0
  131. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-strategy-start.json +0 -0
  132. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/audit-update.json +0 -0
  133. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/infra-optim-exception.json +0 -0
  134. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/notification_samples/service-update.json +0 -0
  135. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/requirements.txt +0 -0
  136. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/_static/.placeholder +0 -0
  137. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/admin/apache-mod-wsgi.rst +0 -0
  138. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/admin/gmr.rst +0 -0
  139. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/admin/index.rst +0 -0
  140. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/admin/policy.rst +0 -0
  141. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/architecture.rst +0 -0
  142. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/conf.py +0 -0
  143. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/configuration/configuring.rst +0 -0
  144. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/configuration/index.rst +0 -0
  145. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/configuration/watcher.rst +0 -0
  146. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/api_microversion_history.rst +0 -0
  147. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/concurrency.rst +0 -0
  148. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/contributing.rst +0 -0
  149. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/devstack.rst +0 -0
  150. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/environment.rst +0 -0
  151. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/index.rst +0 -0
  152. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/notifications.rst +0 -0
  153. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/action-plugin.rst +0 -0
  154. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/base-setup.rst +0 -0
  155. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/cdmc-plugin.rst +0 -0
  156. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/goal-plugin.rst +0 -0
  157. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/index.rst +0 -0
  158. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/planner-plugin.rst +0 -0
  159. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/plugins.rst +0 -0
  160. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/scoring-engine-plugin.rst +0 -0
  161. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/plugin/strategy-plugin.rst +0 -0
  162. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/rally_link.rst +0 -0
  163. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/contributor/testing.rst +0 -0
  164. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/datasources/grafana.rst +0 -0
  165. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/datasources/index.rst +0 -0
  166. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/glossary.rst +0 -0
  167. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/dia/architecture.dia +0 -0
  168. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/dia/functional_data_model.dia +0 -0
  169. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/README.rst +0 -0
  170. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/action_plan_state_machine.txt +0 -0
  171. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/audit_state_machine.txt +0 -0
  172. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_architecture_cdmc_sync.txt +0 -0
  173. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_create_and_launch_audit.txt +0 -0
  174. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_create_audit_template.txt +0 -0
  175. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_from_audit_execution_to_actionplan_creation.txt +0 -0
  176. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_launch_action_plan.txt +0 -0
  177. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_launch_action_plan_in_applier.txt +0 -0
  178. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_overview_watcher_usage.txt +0 -0
  179. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/sequence_trigger_audit_in_decision_engine.txt +0 -0
  180. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/image_src/plantuml/watcher_db_schema_diagram.txt +0 -0
  181. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/action_plan_state_machine.png +0 -0
  182. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/architecture.svg +0 -0
  183. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/audit_state_machine.png +0 -0
  184. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/functional_data_model.svg +0 -0
  185. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_architecture_cdmc_sync.png +0 -0
  186. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_create_and_launch_audit.png +0 -0
  187. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_create_audit_template.png +0 -0
  188. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_from_audit_execution_to_actionplan_creation.png +0 -0
  189. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_launch_action_plan.png +0 -0
  190. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_launch_action_plan_in_applier.png +0 -0
  191. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_overview_watcher_usage.png +0 -0
  192. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/sequence_trigger_audit_in_decision_engine.png +0 -0
  193. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/images/watcher_db_schema_diagram.png +0 -0
  194. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/index.rst +0 -0
  195. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/common_configure.rst +0 -0
  196. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/common_prerequisites.rst +0 -0
  197. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/get_started.rst +0 -0
  198. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/index.rst +0 -0
  199. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/install-rdo.rst +0 -0
  200. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/install-ubuntu.rst +0 -0
  201. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/install.rst +0 -0
  202. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/next-steps.rst +0 -0
  203. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/install/verify.rst +0 -0
  204. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/footer.rst +0 -0
  205. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/general-options.rst +0 -0
  206. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/index.rst +0 -0
  207. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/watcher-api.rst +0 -0
  208. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/watcher-applier.rst +0 -0
  209. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/watcher-db-manage.rst +0 -0
  210. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/watcher-decision-engine.rst +0 -0
  211. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/man/watcher-status.rst +0 -0
  212. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/actuation.rst +0 -0
  213. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/basic-server-consolidation.rst +0 -0
  214. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/host_maintenance.rst +0 -0
  215. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/index.rst +0 -0
  216. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/node_resource_consolidation.rst +0 -0
  217. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/noisy_neighbor.rst +0 -0
  218. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/outlet_temp_control.rst +0 -0
  219. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/saving_energy.rst +0 -0
  220. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/storage_capacity_balance.rst +0 -0
  221. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/strategy-template.rst +0 -0
  222. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/uniform_airflow.rst +0 -0
  223. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/vm_workload_consolidation.rst +0 -0
  224. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/workload-stabilization.rst +0 -0
  225. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/workload_balance.rst +0 -0
  226. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/strategies/zone_migration.rst +0 -0
  227. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/user/event_type_audit.rst +0 -0
  228. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/user/index.rst +0 -0
  229. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/user/user-guide.rst +0 -0
  230. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/doc/source/user/ways-to-install.rst +0 -0
  231. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/etc/apache2/watcher +0 -0
  232. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/etc/watcher/README-watcher.conf.txt +0 -0
  233. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/etc/watcher/oslo-config-generator/watcher.conf +0 -0
  234. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/etc/watcher/oslo-policy-generator/watcher-policy-generator.conf +0 -0
  235. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/python_watcher.egg-info/dependency_links.txt +0 -0
  236. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/python_watcher.egg-info/not-zip-safe +0 -0
  237. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/python_watcher.egg-info/requires.txt +13 -13
  238. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/python_watcher.egg-info/top_level.txt +0 -0
  239. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/rally-jobs/README.rst +0 -0
  240. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/rally-jobs/watcher-watcher.yaml +0 -0
  241. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/.placeholder +0 -0
  242. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/action-plan-cancel-c54726378019e096.yaml +0 -0
  243. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/action-plan-versioned-notifications-api-e8ca4f5d37aa5b4b.yaml +0 -0
  244. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/action-versioned-notifications-api-ff94fc0f401292d0.yaml +0 -0
  245. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-baremetal-scoper-9ef23f5fb8f0be6a.yaml +0 -0
  246. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-force-field-to-audit-4bcaeedfe27233ad.yaml +0 -0
  247. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-ha-support-b9042255e5b76e42.yaml +0 -0
  248. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-name-for-audit-0df1f39f00736f06.yaml +0 -0
  249. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-plugins-parameters-376eb6b0b8978b44.yaml +0 -0
  250. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-power-on-off-a77673d482568a8b.yaml +0 -0
  251. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-scoring-module-fa00d013ed2d614e.yaml +0 -0
  252. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-start-end-time-for-continuous-audit-52c45052cb06d153.yaml +0 -0
  253. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/add-upgrade-check-framework-5bb9693c8a78931c.yaml +0 -0
  254. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/api-call-retry-fef741ac684c58dd.yaml +0 -0
  255. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/api-microversioning-7999a3ee8073bf32.yaml +0 -0
  256. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/audit-scoper-for-storage-data-model-cdccc803542d22db.yaml +0 -0
  257. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/audit-tag-vm-metadata-47a3e4468748853c.yaml +0 -0
  258. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/audit-versioned-notifications-api-bca7738e16954bad.yaml +0 -0
  259. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/automatic-triggering-audit-8a9b0540d547db60.yaml +0 -0
  260. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/background-jobs-ha-9d3cf3fe356f4705.yaml +0 -0
  261. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/bp-audit-scope-exclude-project-511a7720aac00dff.yaml +0 -0
  262. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/build-baremetal-data-model-in-watcher-3023453a47b61dab.yaml +0 -0
  263. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/cdm-scoping-8d9c307bad46bfa1.yaml +0 -0
  264. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/centralise-config-opts-95670987dfbdb0e7.yaml +0 -0
  265. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/change-ram-util-metric-4a3e6984b9dd968d.yaml +0 -0
  266. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/check-strategy-requirements-66f9e9262412f8ec.yaml +0 -0
  267. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/cinder-model-integration-baa394a72a0a33bf.yaml +0 -0
  268. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/cluster-model-objects-wrapper-9c799ea262c56a5b.yaml +0 -0
  269. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/compute-cdm-include-all-instances-f7506ded2d57732f.yaml +0 -0
  270. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/configurable-weights-default-planner-3746b33160bc7347.yaml +0 -0
  271. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/consume-nova-versioned-notifications-f98361b37e546b4d.yaml +0 -0
  272. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/continuously-optimization-35364f4d2c0b81fc.yaml +0 -0
  273. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/cron-based-continuous-audits-c3eedf28d9752b37.yaml +0 -0
  274. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/datasource-query-retry-00cba5f7e68aec39.yaml +0 -0
  275. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/db-migration-e1a705a8b54ccdd2.yaml +0 -0
  276. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/define-the-audit-scope-e89edc5051dcf3f2.yaml +0 -0
  277. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/deprecate-ceilometer-datasource-446b0be70fbce28b.yaml +0 -0
  278. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/deprecate-json-formatted-policy-file-3a92379e9f5dd203.yaml +0 -0
  279. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/drop-py-2-7-54f8e806d71f19a7.yaml +0 -0
  280. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/dynamic-action-description-0e947b9e7ef2a134.yaml +0 -0
  281. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/efficacy-indicator-95380ad7b84e3be2.yaml +0 -0
  282. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/enhance-watcher-applier-engine-86c676ce8f179e68.yaml +0 -0
  283. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/event-driven-optimization-based-4870f112bef8a560.yaml +0 -0
  284. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/file-based-metric-map-c2af62b5067895df.yaml +0 -0
  285. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/formal-datasource-interface-implementation-222769d55a127d33.yaml +0 -0
  286. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/general-purpose-decision-engine-threadpool-0711b23abfc9d409.yaml +0 -0
  287. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/get-goal-from-strategy-396c9b13a38bb650.yaml +0 -0
  288. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/global-datasource-preference-3ab47b4be09ff3a5.yaml +0 -0
  289. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/gnocchi-watcher-43c25d391fbd3e9c.yaml +0 -0
  290. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/grafana-datasource-b672367c23ffa0c6.yaml +0 -0
  291. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/graph-based-cluster-model-523937a6f5e66537.yaml +0 -0
  292. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/host-maintenance-strategy-41f640927948fb56.yaml +0 -0
  293. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/improve-compute-data-model-b427c85e4ed2b6fb.yaml +0 -0
  294. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/jsonschema-validation-79cab05d5295da00.yaml +0 -0
  295. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/min-required-nova-train-71f124192d88ae52.yaml +0 -0
  296. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/monasca-support-0b0486b8572ac38b.yaml +0 -0
  297. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/multiple-global-efficacy-indicator-fc11c4844a12a7d5.yaml +0 -0
  298. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/node-resource-consolidation-73bc0c0abfeb0b03.yaml +0 -0
  299. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/noisy-neighbor-strategy-a71342740b59dddc.yaml +0 -0
  300. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/notifications-actionplan-cancel-edb2a4a12543e2d0.yaml +0 -0
  301. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/optimization-threshold-21ad38f0470d0e1a.yaml +0 -0
  302. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/persistent-audit-parameters-ae41dd7252ba9672.yaml +0 -0
  303. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/planner-storage-action-plan-26ef37893c5e8648.yaml +0 -0
  304. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/remove-nova-legacy-notifications-e1b6d10eff58f30a.yaml +0 -0
  305. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/replace-cold-migrate-to-use-nova-migration-api-cecd9a39ddd3bc58.yaml +0 -0
  306. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/scope-for-data-model-ea9792f90db14343.yaml +0 -0
  307. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/service-versioned-notifications-api-70367b79a565d900.yaml +0 -0
  308. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/show-datamodel-api-6945b744fd5d25d5.yaml +0 -0
  309. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/stale-action-plan-b6a6b08df873c128.yaml +0 -0
  310. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/standard-deviation-strategy-cd1d0c443fdfde9c.yaml +0 -0
  311. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/storage-workload-balance-0ecabbc1791e6894.yaml +0 -0
  312. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/support-keystoneclient-option-b30d1ff45f86a2e7.yaml +0 -0
  313. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/support-placement-api-58ce6bef1bbbe98a.yaml +0 -0
  314. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/suspended-audit-state-07f998c94e9d9a47.yaml +0 -0
  315. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/uniform-airflow-strategy-68cdba1419c3f770.yaml +0 -0
  316. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/uwsgi-support-8dcea6961e56dad0.yaml +0 -0
  317. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/volume-migrate-action-fc57b0ce0e4c39ae.yaml +0 -0
  318. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/watcher-notifications-ovo-7b44d52ef6400dd0.yaml +0 -0
  319. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/watcher-planner-selector-84d77549d46f362a.yaml +0 -0
  320. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/watcher-policies-1e86a30f0f11c6fa.yaml +0 -0
  321. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/watcher-service-list-7b2f4b64f71e9b89.yaml +0 -0
  322. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/watcher-versioned-objects-fc5abf5c81c4590c.yaml +0 -0
  323. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/workload-balance-base-on-cpu-or-ram-util-3ff4ee968c32b2ed.yaml +0 -0
  324. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/workload-balance-migration-strategy-a0b05148a57815c0.yaml +0 -0
  325. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/notes/zone-migration-strategy-10f7656a2a01e607.yaml +0 -0
  326. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/2023.1.rst +0 -0
  327. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/2023.2.rst +0 -0
  328. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/_static/.placeholder +0 -0
  329. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/conf.py +0 -0
  330. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/index.rst +0 -0
  331. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po +0 -0
  332. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po +0 -0
  333. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/newton.rst +0 -0
  334. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/ocata.rst +0 -0
  335. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/pike.rst +0 -0
  336. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/queens.rst +0 -0
  337. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/rocky.rst +0 -0
  338. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/stein.rst +0 -0
  339. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/train.rst +0 -0
  340. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/unreleased.rst +0 -0
  341. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/ussuri.rst +0 -0
  342. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/victoria.rst +0 -0
  343. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/wallaby.rst +0 -0
  344. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/xena.rst +0 -0
  345. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/yoga.rst +0 -0
  346. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/releasenotes/source/zed.rst +0 -0
  347. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/requirements.txt +0 -0
  348. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/setup.cfg +0 -0
  349. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/setup.py +0 -0
  350. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/test-requirements.txt +0 -0
  351. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/__init__.py +0 -0
  352. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/_i18n.py +0 -0
  353. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/__init__.py +0 -0
  354. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/acl.py +0 -0
  355. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/app.py +0 -0
  356. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/app.wsgi +0 -0
  357. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/config.py +0 -0
  358. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/__init__.py +0 -0
  359. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/base.py +0 -0
  360. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/link.py +0 -0
  361. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/rest_api_version_history.rst +0 -0
  362. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/root.py +0 -0
  363. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/__init__.py +0 -0
  364. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/action.py +0 -0
  365. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/action_plan.py +0 -0
  366. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/audit.py +0 -0
  367. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/audit_template.py +0 -0
  368. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/collection.py +0 -0
  369. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/data_model.py +0 -0
  370. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/efficacy_indicator.py +0 -0
  371. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/goal.py +0 -0
  372. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/scoring_engine.py +0 -0
  373. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/service.py +0 -0
  374. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/strategy.py +0 -0
  375. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/types.py +0 -0
  376. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/utils.py +0 -0
  377. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/versions.py +0 -0
  378. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/controllers/v1/webhooks.py +0 -0
  379. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/hooks.py +0 -0
  380. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/middleware/__init__.py +0 -0
  381. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/middleware/auth_token.py +0 -0
  382. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/middleware/parsable_error.py +0 -0
  383. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/scheduling.py +0 -0
  384. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/api/wsgi.py +0 -0
  385. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/__init__.py +0 -0
  386. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/action_plan/__init__.py +0 -0
  387. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/action_plan/base.py +0 -0
  388. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/action_plan/default.py +0 -0
  389. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/__init__.py +0 -0
  390. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/base.py +0 -0
  391. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/change_node_power_state.py +0 -0
  392. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/change_nova_service_state.py +0 -0
  393. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/factory.py +0 -0
  394. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/migration.py +0 -0
  395. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/nop.py +0 -0
  396. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/resize.py +0 -0
  397. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/actions/sleep.py +0 -0
  398. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/base.py +0 -0
  399. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/default.py +0 -0
  400. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/loading/__init__.py +0 -0
  401. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/loading/default.py +0 -0
  402. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/manager.py +0 -0
  403. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/messaging/__init__.py +0 -0
  404. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/messaging/trigger.py +0 -0
  405. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/rpcapi.py +0 -0
  406. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/sync.py +0 -0
  407. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/workflow_engine/__init__.py +0 -0
  408. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/workflow_engine/base.py +0 -0
  409. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/applier/workflow_engine/default.py +0 -0
  410. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/__init__.py +0 -0
  411. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/api.py +0 -0
  412. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/applier.py +0 -0
  413. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/dbmanage.py +0 -0
  414. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/decisionengine.py +0 -0
  415. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/status.py +0 -0
  416. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/cmd/sync.py +0 -0
  417. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/__init__.py +0 -0
  418. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/cinder_helper.py +0 -0
  419. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/clients.py +0 -0
  420. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/config.py +0 -0
  421. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/exception.py +0 -0
  422. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/ironic_helper.py +0 -0
  423. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/loader/__init__.py +0 -0
  424. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/loader/base.py +0 -0
  425. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/loader/default.py +0 -0
  426. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/loader/loadable.py +0 -0
  427. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/metal_helper/__init__.py +0 -0
  428. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/metal_helper/base.py +0 -0
  429. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/metal_helper/constants.py +0 -0
  430. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/metal_helper/factory.py +0 -0
  431. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/metal_helper/ironic.py +0 -0
  432. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/metal_helper/maas.py +0 -0
  433. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/nova_helper.py +0 -0
  434. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/paths.py +0 -0
  435. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/placement_helper.py +0 -0
  436. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/__init__.py +0 -0
  437. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/action.py +0 -0
  438. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/action_plan.py +0 -0
  439. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/audit.py +0 -0
  440. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/audit_template.py +0 -0
  441. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/base.py +0 -0
  442. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/data_model.py +0 -0
  443. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/goal.py +0 -0
  444. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/scoring_engine.py +0 -0
  445. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/service.py +0 -0
  446. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policies/strategy.py +0 -0
  447. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/policy.py +0 -0
  448. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/rpc.py +0 -0
  449. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/scheduling.py +0 -0
  450. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/service.py +0 -0
  451. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/common/service_manager.py +0 -0
  452. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/__init__.py +0 -0
  453. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/api.py +0 -0
  454. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/applier.py +0 -0
  455. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/ceilometer_client.py +0 -0
  456. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/cinder_client.py +0 -0
  457. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/clients_auth.py +0 -0
  458. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/collector.py +0 -0
  459. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/datasources.py +0 -0
  460. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/db.py +0 -0
  461. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/decision_engine.py +0 -0
  462. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/exception.py +0 -0
  463. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/glance_client.py +0 -0
  464. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/gnocchi_client.py +0 -0
  465. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/grafana_client.py +0 -0
  466. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/grafana_translators.py +0 -0
  467. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/ironic_client.py +0 -0
  468. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/keystone_client.py +0 -0
  469. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/maas_client.py +0 -0
  470. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/monasca_client.py +0 -0
  471. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/neutron_client.py +0 -0
  472. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/nova_client.py +0 -0
  473. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/opts.py +0 -0
  474. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/paths.py +0 -0
  475. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/placement_client.py +0 -0
  476. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/planner.py +0 -0
  477. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/plugins.py +0 -0
  478. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/conf/service.py +0 -0
  479. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/__init__.py +0 -0
  480. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/api.py +0 -0
  481. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/migration.py +0 -0
  482. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/purge.py +0 -0
  483. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/__init__.py +0 -0
  484. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/README.rst +0 -0
  485. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/script.py.mako +0 -0
  486. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/001_ocata.py +0 -0
  487. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/0f6042416884_add_apscheduler_jobs.py +0 -0
  488. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/3cfc94cecf4e_add_name_for_audit.py +0 -0
  489. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/4b16194c56bc_add_start_end_time.py +0 -0
  490. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/52804f2498c4_add_hostname.py +0 -0
  491. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/609bec748f2a_add_force_field.py +0 -0
  492. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/a86240e89a29_.py +0 -0
  493. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/d098df6021e2_cron_support_for_audit.py +0 -0
  494. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic/versions/d09a5945e4a0_add_action_description_table.py +0 -0
  495. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/alembic.ini +0 -0
  496. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/db/sqlalchemy/job_store.py +0 -0
  497. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/__init__.py +0 -0
  498. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/audit/__init__.py +0 -0
  499. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/audit/base.py +0 -0
  500. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/audit/event.py +0 -0
  501. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/audit/oneshot.py +0 -0
  502. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/__init__.py +0 -0
  503. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/base.py +0 -0
  504. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/ceilometer.py +0 -0
  505. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/gnocchi.py +0 -0
  506. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/grafana.py +0 -0
  507. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/grafana_translator/__init__.py +0 -0
  508. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/grafana_translator/base.py +0 -0
  509. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/grafana_translator/influxdb.py +0 -0
  510. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/manager.py +0 -0
  511. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/datasources/monasca.py +0 -0
  512. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/gmr.py +0 -0
  513. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/__init__.py +0 -0
  514. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/base.py +0 -0
  515. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/efficacy/__init__.py +0 -0
  516. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/efficacy/base.py +0 -0
  517. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/efficacy/indicators.py +0 -0
  518. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/efficacy/specs.py +0 -0
  519. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/goal/goals.py +0 -0
  520. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/loading/__init__.py +0 -0
  521. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/loading/default.py +0 -0
  522. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/manager.py +0 -0
  523. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/messaging/__init__.py +0 -0
  524. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/messaging/audit_endpoint.py +0 -0
  525. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/messaging/data_model_endpoint.py +0 -0
  526. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/__init__.py +0 -0
  527. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/base.py +0 -0
  528. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/collector/__init__.py +0 -0
  529. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/collector/base.py +0 -0
  530. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/collector/cinder.py +0 -0
  531. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/collector/ironic.py +0 -0
  532. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/collector/manager.py +0 -0
  533. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/collector/nova.py +0 -0
  534. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/__init__.py +0 -0
  535. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/baremetal_resource.py +0 -0
  536. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/base.py +0 -0
  537. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/compute_resource.py +0 -0
  538. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/instance.py +0 -0
  539. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/node.py +0 -0
  540. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/storage_resource.py +0 -0
  541. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/element/volume.py +0 -0
  542. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/model_root.py +0 -0
  543. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/notification/__init__.py +0 -0
  544. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/notification/base.py +0 -0
  545. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/notification/cinder.py +0 -0
  546. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/notification/filtering.py +0 -0
  547. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/model/notification/nova.py +0 -0
  548. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/planner/__init__.py +0 -0
  549. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/planner/base.py +0 -0
  550. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/planner/manager.py +0 -0
  551. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/planner/node_resource_consolidation.py +0 -0
  552. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/planner/weight.py +0 -0
  553. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/planner/workload_stabilization.py +0 -0
  554. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/rpcapi.py +0 -0
  555. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scheduling.py +0 -0
  556. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scope/__init__.py +0 -0
  557. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scope/baremetal.py +0 -0
  558. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scope/base.py +0 -0
  559. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scope/compute.py +0 -0
  560. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scope/storage.py +0 -0
  561. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scoring/__init__.py +0 -0
  562. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scoring/base.py +0 -0
  563. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scoring/dummy_scorer.py +0 -0
  564. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scoring/dummy_scoring_container.py +0 -0
  565. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/scoring/scoring_factory.py +0 -0
  566. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/solution/__init__.py +0 -0
  567. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/solution/base.py +0 -0
  568. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/solution/default.py +0 -0
  569. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/solution/efficacy.py +0 -0
  570. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/solution/solution_comparator.py +0 -0
  571. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/solution/solution_evaluator.py +0 -0
  572. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/__init__.py +0 -0
  573. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/common/__init__.py +0 -0
  574. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/common/level.py +0 -0
  575. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/context/__init__.py +0 -0
  576. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/context/base.py +0 -0
  577. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/context/default.py +0 -0
  578. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/selection/__init__.py +0 -0
  579. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/selection/base.py +0 -0
  580. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/selection/default.py +0 -0
  581. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/__init__.py +0 -0
  582. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/actuation.py +0 -0
  583. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/base.py +0 -0
  584. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/basic_consolidation.py +0 -0
  585. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/dummy_strategy.py +0 -0
  586. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/dummy_with_resize.py +0 -0
  587. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/dummy_with_scorer.py +0 -0
  588. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/host_maintenance.py +0 -0
  589. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/node_resource_consolidation.py +0 -0
  590. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/noisy_neighbor.py +0 -0
  591. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/outlet_temp_control.py +0 -0
  592. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/saving_energy.py +0 -0
  593. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/storage_capacity_balance.py +0 -0
  594. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/uniform_airflow.py +0 -0
  595. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py +0 -0
  596. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/workload_balance.py +0 -0
  597. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/strategy/strategies/workload_stabilization.py +0 -0
  598. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/sync.py +0 -0
  599. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/decision_engine/threading.py +0 -0
  600. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/hacking/__init__.py +0 -0
  601. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/hacking/checks.py +0 -0
  602. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/locale/de/LC_MESSAGES/watcher.po +0 -0
  603. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/locale/en_GB/LC_MESSAGES/watcher.po +0 -0
  604. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/__init__.py +0 -0
  605. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/action.py +0 -0
  606. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/action_plan.py +0 -0
  607. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/audit.py +0 -0
  608. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/base.py +0 -0
  609. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/exception.py +0 -0
  610. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/goal.py +0 -0
  611. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/service.py +0 -0
  612. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/notifications/strategy.py +0 -0
  613. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/__init__.py +0 -0
  614. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/action.py +0 -0
  615. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/action_description.py +0 -0
  616. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/action_plan.py +0 -0
  617. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/audit.py +0 -0
  618. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/audit_template.py +0 -0
  619. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/base.py +0 -0
  620. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/efficacy_indicator.py +0 -0
  621. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/fields.py +0 -0
  622. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/goal.py +0 -0
  623. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/scoring_engine.py +0 -0
  624. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/service.py +0 -0
  625. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/objects/strategy.py +0 -0
  626. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/__init__.py +0 -0
  627. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/__init__.py +0 -0
  628. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/base.py +0 -0
  629. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/test_base.py +0 -0
  630. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/test_config.py +0 -0
  631. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/test_hooks.py +0 -0
  632. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/test_root.py +0 -0
  633. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/test_scheduling.py +0 -0
  634. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/test_utils.py +0 -0
  635. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/utils.py +0 -0
  636. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/__init__.py +0 -0
  637. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_actions.py +0 -0
  638. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_actions_plans.py +0 -0
  639. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_audit_templates.py +0 -0
  640. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_audits.py +0 -0
  641. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_data_model.py +0 -0
  642. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_goals.py +0 -0
  643. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_microversions.py +0 -0
  644. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_root.py +0 -0
  645. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_scoring_engines.py +0 -0
  646. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_services.py +0 -0
  647. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_strategies.py +0 -0
  648. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_types.py +0 -0
  649. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_utils.py +0 -0
  650. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/api/v1/test_webhooks.py +0 -0
  651. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/__init__.py +0 -0
  652. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/action_plan/__init__.py +0 -0
  653. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/action_plan/test_default_action_handler.py +0 -0
  654. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/__init__.py +0 -0
  655. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/loading/__init__.py +0 -0
  656. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/loading/test_default_actions_loader.py +0 -0
  657. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/test_change_node_power_state.py +0 -0
  658. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/test_change_nova_service_state.py +0 -0
  659. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/test_migration.py +0 -0
  660. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/test_resize.py +0 -0
  661. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/actions/test_sleep.py +0 -0
  662. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/messaging/__init__.py +0 -0
  663. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/messaging/test_trigger_action_plan_endpoint.py +0 -0
  664. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/test_applier_manager.py +0 -0
  665. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/test_rpcapi.py +0 -0
  666. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/test_sync.py +0 -0
  667. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/workflow_engine/__init__.py +0 -0
  668. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/workflow_engine/loading/__init__.py +0 -0
  669. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/workflow_engine/loading/test_default_engine_loader.py +0 -0
  670. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/workflow_engine/test_default_workflow_engine.py +0 -0
  671. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/applier/workflow_engine/test_taskflow_action_container.py +0 -0
  672. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/base.py +0 -0
  673. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/cmd/__init__.py +0 -0
  674. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/cmd/test_api.py +0 -0
  675. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/cmd/test_applier.py +0 -0
  676. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/cmd/test_db_manage.py +0 -0
  677. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/cmd/test_decision_engine.py +0 -0
  678. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/cmd/test_status.py +0 -0
  679. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/__init__.py +0 -0
  680. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/loader/__init__.py +0 -0
  681. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/loader/test_loader.py +0 -0
  682. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/metal_helper/__init__.py +0 -0
  683. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/metal_helper/test_base.py +0 -0
  684. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/metal_helper/test_factory.py +0 -0
  685. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/metal_helper/test_ironic.py +0 -0
  686. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/metal_helper/test_maas.py +0 -0
  687. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_cinder_helper.py +0 -0
  688. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_clients.py +0 -0
  689. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_ironic_helper.py +0 -0
  690. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_nova_helper.py +0 -0
  691. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_placement_helper.py +0 -0
  692. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_service.py +0 -0
  693. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/common/test_utils.py +0 -0
  694. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/conf/__init__.py +0 -0
  695. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/conf/test_list_opts.py +0 -0
  696. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/conf_fixture.py +0 -0
  697. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/config.py +0 -0
  698. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/__init__.py +0 -0
  699. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_action.py +0 -0
  700. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_action_description.py +0 -0
  701. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_action_plan.py +0 -0
  702. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_audit.py +0 -0
  703. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_audit_template.py +0 -0
  704. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_efficacy_indicator.py +0 -0
  705. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_goal.py +0 -0
  706. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_purge.py +0 -0
  707. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_scoring_engine.py +0 -0
  708. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_service.py +0 -0
  709. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/test_strategy.py +0 -0
  710. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/db/utils.py +0 -0
  711. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/__init__.py +0 -0
  712. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/audit/__init__.py +0 -0
  713. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/cluster/__init__.py +0 -0
  714. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/cluster/test_cinder_cdmc.py +0 -0
  715. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/cluster/test_cluster_data_model_collector.py +0 -0
  716. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/cluster/test_nova_cdmc.py +0 -0
  717. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/__init__.py +0 -0
  718. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/grafana_translators/__init__.py +0 -0
  719. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/grafana_translators/test_base.py +0 -0
  720. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/grafana_translators/test_influxdb.py +0 -0
  721. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/test_base.py +0 -0
  722. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/test_gnocchi_helper.py +0 -0
  723. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/test_grafana_helper.py +0 -0
  724. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/test_manager.py +0 -0
  725. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/datasources/test_monasca_helper.py +0 -0
  726. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/event_consumer/__init__.py +0 -0
  727. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/fake_goals.py +0 -0
  728. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/fake_metal_helper.py +0 -0
  729. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/fake_strategies.py +0 -0
  730. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/loading/__init__.py +0 -0
  731. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/loading/test_collector_loader.py +0 -0
  732. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/loading/test_default_planner_loader.py +0 -0
  733. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/loading/test_default_strategy_loader.py +0 -0
  734. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/loading/test_goal_loader.py +0 -0
  735. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/messaging/__init__.py +0 -0
  736. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/messaging/test_audit_endpoint.py +0 -0
  737. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/messaging/test_data_model_endpoint.py +0 -0
  738. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/__init__.py +0 -0
  739. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/ceilometer_metrics.py +0 -0
  740. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/ironic_scenario_1.xml +0 -0
  741. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_1.xml +0 -0
  742. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_10.xml +0 -0
  743. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_1_node_unavailable.xml +0 -0
  744. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_all_instances_exclude.xml +0 -0
  745. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_all_nodes_disable.xml +0 -0
  746. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_1_with_metrics.xml +0 -0
  747. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_2_with_metrics.xml +0 -0
  748. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_3_with_2_nodes.xml +0 -0
  749. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_3_with_metrics.xml +0 -0
  750. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_4_with_1_node_no_instance.xml +0 -0
  751. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_5_with_instance_disk_0.xml +0 -0
  752. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_6_with_2_nodes.xml +0 -0
  753. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_7_with_2_nodes.xml +0 -0
  754. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_8_with_4_nodes.xml +0 -0
  755. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/scenario_9_with_3_active_plus_1_disabled_nodes.xml +0 -0
  756. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/data/storage_scenario_1.xml +0 -0
  757. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/faker_cluster_and_metrics.py +0 -0
  758. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/faker_cluster_state.py +0 -0
  759. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/gnocchi_metrics.py +0 -0
  760. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/monasca_metrics.py +0 -0
  761. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/__init__.py +0 -0
  762. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/capacity.json +0 -0
  763. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-create-end.json +0 -0
  764. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-delete-end.json +0 -0
  765. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-live_migration_force_complete-end.json +0 -0
  766. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-live_migration_post-end.json +0 -0
  767. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-lock.json +0 -0
  768. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-pause-end.json +0 -0
  769. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-power_off-end.json +0 -0
  770. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-power_on-end.json +0 -0
  771. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-rebuild-end.json +0 -0
  772. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-rescue-end.json +0 -0
  773. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-resize_confirm-end.json +0 -0
  774. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-restore-end.json +0 -0
  775. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-resume-end.json +0 -0
  776. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-shelve-end.json +0 -0
  777. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-shutdown-end.json +0 -0
  778. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-soft_delete-end.json +0 -0
  779. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-suspend-end.json +0 -0
  780. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unlock.json +0 -0
  781. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unpause-end.json +0 -0
  782. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unrescue-end.json +0 -0
  783. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-unshelve-end.json +0 -0
  784. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/instance-update.json +0 -0
  785. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_instance-update.json +0 -0
  786. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_notfound_instance-update.json +0 -0
  787. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_notfound_legacy_instance-update.json +0 -0
  788. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-disabled.json +0 -0
  789. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario3_service-update-enabled.json +0 -0
  790. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_bootable-volume-create.json +0 -0
  791. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_capacity.json +0 -0
  792. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_capacity_node_notfound.json +0 -0
  793. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_capacity_pool_notfound.json +0 -0
  794. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_error-volume-create.json +0 -0
  795. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-attach.json +0 -0
  796. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-create.json +0 -0
  797. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-create_pool_notfound.json +0 -0
  798. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-delete.json +0 -0
  799. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-detach.json +0 -0
  800. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-resize.json +0 -0
  801. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/scenario_1_volume-update.json +0 -0
  802. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/service-create.json +0 -0
  803. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/service-delete.json +0 -0
  804. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/data/service-update.json +0 -0
  805. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/fake_managers.py +0 -0
  806. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/test_cinder_notifications.py +0 -0
  807. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/test_notifications.py +0 -0
  808. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/notification/test_nova_notifications.py +0 -0
  809. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/test_element.py +0 -0
  810. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/model/test_model.py +0 -0
  811. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/planner/__init__.py +0 -0
  812. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/planner/test_node_resource_consolidation.py +0 -0
  813. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/planner/test_planner_manager.py +0 -0
  814. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/planner/test_weight_planner.py +0 -0
  815. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/planner/test_workload_stabilization_planner.py +0 -0
  816. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scope/__init__.py +0 -0
  817. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scope/fake_scopes.py +0 -0
  818. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scope/test_baremetal.py +0 -0
  819. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scope/test_compute.py +0 -0
  820. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scope/test_storage.py +0 -0
  821. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scoring/__init__.py +0 -0
  822. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scoring/test_dummy_scorer.py +0 -0
  823. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scoring/test_dummy_scoring_container.py +0 -0
  824. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/scoring/test_scoring_factory.py +0 -0
  825. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/solution/__init__.py +0 -0
  826. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/solution/test_default_solution.py +0 -0
  827. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/__init__.py +0 -0
  828. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/context/__init__.py +0 -0
  829. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/context/test_strategy_context.py +0 -0
  830. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/selector/__init__.py +0 -0
  831. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/selector/test_strategy_selector.py +0 -0
  832. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/__init__.py +0 -0
  833. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_actuator.py +0 -0
  834. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_base.py +0 -0
  835. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_basic_consolidation.py +0 -0
  836. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_dummy_strategy.py +0 -0
  837. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_dummy_with_scorer.py +0 -0
  838. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_host_maintenance.py +0 -0
  839. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_node_resource_consolidation.py +0 -0
  840. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py +0 -0
  841. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_outlet_temp_control.py +0 -0
  842. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_saving_energy.py +0 -0
  843. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_storage_capacity_balance.py +0 -0
  844. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_strategy_endpoint.py +0 -0
  845. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_uniform_airflow.py +0 -0
  846. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_vm_workload_consolidation.py +0 -0
  847. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_workload_balance.py +0 -0
  848. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/strategy/strategies/test_workload_stabilization.py +0 -0
  849. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/test_gmr.py +0 -0
  850. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/test_rpcapi.py +0 -0
  851. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/test_scheduling.py +0 -0
  852. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/decision_engine/test_sync.py +0 -0
  853. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/fake_policy.py +0 -0
  854. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/fakes.py +0 -0
  855. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/notifications/__init__.py +0 -0
  856. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/notifications/test_action_notification.py +0 -0
  857. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/notifications/test_action_plan_notification.py +0 -0
  858. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/notifications/test_audit_notification.py +0 -0
  859. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/notifications/test_notification.py +0 -0
  860. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/notifications/test_service_notifications.py +0 -0
  861. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/__init__.py +0 -0
  862. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_action.py +0 -0
  863. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_action_description.py +0 -0
  864. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_action_plan.py +0 -0
  865. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_audit.py +0 -0
  866. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_audit_template.py +0 -0
  867. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_efficacy_indicator.py +0 -0
  868. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_goal.py +0 -0
  869. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_objects.py +0 -0
  870. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_scoring_engine.py +0 -0
  871. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_service.py +0 -0
  872. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/test_strategy.py +0 -0
  873. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/objects/utils.py +0 -0
  874. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/policy_fixture.py +0 -0
  875. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/tests/test_threading.py +0 -0
  876. {python-watcher-12.0.0.0rc1 → python_watcher-12.1.0}/watcher/version.py +0 -0
@@ -85,6 +85,7 @@
85
85
  vars:
86
86
  tempest_concurrency: 1
87
87
  tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_strategies
88
+ tempest_exclude_regex: .*\[.*\breal_load\b.*\].*
88
89
 
89
90
  - job:
90
91
  name: watcher-tempest-multinode
@@ -28,6 +28,7 @@ Dao Cong Tien <tiendc@vn.fujitsu.com>
28
28
  Darren Shaw <ds354m@att.com>
29
29
  David TARDIVEL <David.TARDIVEL@b-com.com>
30
30
  Doug Hellmann <doug@doughellmann.com>
31
+ Douglas Viroel <viroel@gmail.com>
31
32
  Drew Thorstensen <thorst@us.ibm.com>
32
33
  Edwin Zhai <edwin.zhai@intel.com>
33
34
  Egor Panfilov <erakli00@gmail.com>
@@ -47,6 +48,7 @@ Ian Wienand <iwienand@redhat.com>
47
48
  Iswarya_Vakati <v.iswarya@nectechnologies.in>
48
49
  Jaewoo Park <jp655p@att.com>
49
50
  James E. Blair <jeblair@redhat.com>
51
+ James Page <james.page@canonical.com>
50
52
  Jean-Emile DARTOIS <jean-emile.dartois@b-com.com>
51
53
  Jeremy Liu <liujiong@gohighsec.com>
52
54
  Joe Cropper <jwcroppe@us.ibm.com>
@@ -81,6 +83,7 @@ Ralf Rantzau <rrantzau@cisco.com>
81
83
  Sampath Priyankara <sam47priya@gmail.com>
82
84
  Santhosh Fernandes <santhosh.fernandes@gmail.com>
83
85
  Sean McGinnis <sean.mcginnis@gmail.com>
86
+ Sean Mooney <work@seanmooney.info>
84
87
  ShangXiao <shangxiaobj@inspur.com>
85
88
  Steve Kowalik <steven@wedontsleep.org>
86
89
  Steve Wilkerson <sw5822@att.com>
@@ -92,6 +95,7 @@ Tatiana Kholkina <holkina@selectel.ru>
92
95
  Taylor Peoples <tpeoples@us.ibm.com>
93
96
  Thierry Carrez <thierry@openstack.org>
94
97
  Tin Lam <tl3438@att.com>
98
+ Tobias Urdin <tobias.urdin@binero.com>
95
99
  Tobias Urdin <tobias.urdin@binero.se>
96
100
  Tomasz Kaczynski <tomasz.kaczynski@intel.com>
97
101
  Tomasz Trębski <tomasz.trebski@ts.fujitsu.com>
@@ -1,6 +1,22 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 12.1.0
5
+ ------
6
+
7
+ * Configure watcher tempest's microversion in devstack
8
+ * use cinder migrate for swap volume
9
+ * Further database refactoring
10
+ * Replace deprecated LegacyEngineFacade
11
+ * Skip real-data tests in non-real-data jobs
12
+ * Update TOX\_CONSTRAINTS\_FILE for stable/2024.1
13
+ * Update .gitreview for stable/2024.1
14
+
15
+ 12.0.0
16
+ ------
17
+
18
+ * Fix oslo.db >= 15.0.0 compatibility
19
+
4
20
  12.0.0.0rc1
5
21
  -----------
6
22
 
@@ -0,0 +1,97 @@
1
+ Metadata-Version: 2.1
2
+ Name: python-watcher
3
+ Version: 12.1.0
4
+ Summary: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack-based clouds.
5
+ Home-page: https://docs.openstack.org/watcher/latest/
6
+ Author: OpenStack
7
+ Author-email: openstack-discuss@lists.openstack.org
8
+ Classifier: Environment :: OpenStack
9
+ Classifier: Intended Audience :: Information Technology
10
+ Classifier: Intended Audience :: System Administrators
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: Implementation :: CPython
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Requires-Python: >=3.8
22
+ License-File: LICENSE
23
+ Requires-Dist: apscheduler>=3.5.1
24
+ Requires-Dist: jsonpatch>=1.21
25
+ Requires-Dist: keystoneauth1>=3.4.0
26
+ Requires-Dist: jsonschema>=3.2.0
27
+ Requires-Dist: keystonemiddleware>=4.21.0
28
+ Requires-Dist: lxml>=4.5.1
29
+ Requires-Dist: croniter>=0.3.20
30
+ Requires-Dist: os-resource-classes>=0.4.0
31
+ Requires-Dist: oslo.concurrency>=3.26.0
32
+ Requires-Dist: oslo.cache>=1.29.0
33
+ Requires-Dist: oslo.config>=6.8.0
34
+ Requires-Dist: oslo.context>=2.21.0
35
+ Requires-Dist: oslo.db>=4.44.0
36
+ Requires-Dist: oslo.i18n>=3.20.0
37
+ Requires-Dist: oslo.log>=3.37.0
38
+ Requires-Dist: oslo.messaging>=14.1.0
39
+ Requires-Dist: oslo.policy>=3.6.0
40
+ Requires-Dist: oslo.reports>=1.27.0
41
+ Requires-Dist: oslo.serialization>=2.25.0
42
+ Requires-Dist: oslo.service>=1.30.0
43
+ Requires-Dist: oslo.upgradecheck>=1.3.0
44
+ Requires-Dist: oslo.utils>=3.36.0
45
+ Requires-Dist: oslo.versionedobjects>=1.32.0
46
+ Requires-Dist: PasteDeploy>=1.5.2
47
+ Requires-Dist: pbr>=3.1.1
48
+ Requires-Dist: pecan>=1.3.2
49
+ Requires-Dist: PrettyTable>=0.7.2
50
+ Requires-Dist: gnocchiclient>=7.0.1
51
+ Requires-Dist: python-cinderclient>=3.5.0
52
+ Requires-Dist: python-glanceclient>=2.9.1
53
+ Requires-Dist: python-keystoneclient>=3.15.0
54
+ Requires-Dist: python-monascaclient>=1.12.0
55
+ Requires-Dist: python-neutronclient>=6.7.0
56
+ Requires-Dist: python-novaclient>=14.1.0
57
+ Requires-Dist: python-openstackclient>=3.14.0
58
+ Requires-Dist: python-ironicclient>=2.5.0
59
+ Requires-Dist: SQLAlchemy>=1.2.5
60
+ Requires-Dist: stevedore>=1.28.0
61
+ Requires-Dist: taskflow>=3.8.0
62
+ Requires-Dist: WebOb>=1.8.5
63
+ Requires-Dist: WSME>=0.9.2
64
+ Requires-Dist: networkx>=2.4
65
+ Requires-Dist: microversion_parse>=0.2.1
66
+ Requires-Dist: futurist>=1.8.0
67
+
68
+ =======
69
+ Watcher
70
+ =======
71
+
72
+ .. image:: https://governance.openstack.org/tc/badges/watcher.svg
73
+ :target: https://governance.openstack.org/tc/reference/tags/index.html
74
+
75
+ .. Change things from this point on
76
+
77
+ ..
78
+ Except where otherwise noted, this document is licensed under Creative
79
+ Commons Attribution 3.0 License. You can view the license at:
80
+
81
+ https://creativecommons.org/licenses/by/3.0/
82
+
83
+ OpenStack Watcher provides a flexible and scalable resource optimization
84
+ service for multi-tenant OpenStack-based clouds.
85
+ Watcher provides a robust framework to realize a wide range of cloud
86
+ optimization goals, including the reduction of data center
87
+ operating costs, increased system performance via intelligent virtual machine
88
+ migration, increased energy efficiency and more!
89
+
90
+ * Free software: Apache license
91
+ * Wiki: https://wiki.openstack.org/wiki/Watcher
92
+ * Source: https://opendev.org/openstack/watcher
93
+ * Bugs: https://bugs.launchpad.net/watcher
94
+ * Documentation: https://docs.openstack.org/watcher/latest/
95
+ * Release notes: https://docs.openstack.org/releasenotes/watcher/
96
+ * Design specifications: https://specs.openstack.org/openstack/watcher-specs/
97
+
@@ -338,6 +338,19 @@ function stop_watcher {
338
338
  done
339
339
  }
340
340
 
341
+ # configure_tempest_for_watcher() - Configure Tempest for watcher
342
+ function configure_tempest_for_watcher {
343
+ # Set default microversion for watcher-tempest-plugin
344
+ # Please make sure to update this when the microversion is updated, otherwise
345
+ # new tests may be skipped.
346
+ TEMPEST_WATCHER_MIN_MICROVERSION=${TEMPEST_WATCHER_MIN_MICROVERSION:-"1.0"}
347
+ TEMPEST_WATCHER_MAX_MICROVERSION=${TEMPEST_WATCHER_MAX_MICROVERSION:-"1.4"}
348
+
349
+ # Set microversion options in tempest.conf
350
+ iniset $TEMPEST_CONFIG optimize min_microversion $TEMPEST_WATCHER_MIN_MICROVERSION
351
+ iniset $TEMPEST_CONFIG optimize max_microversion $TEMPEST_WATCHER_MAX_MICROVERSION
352
+ }
353
+
341
354
  # Restore xtrace
342
355
  $_XTRACE_WATCHER
343
356
 
@@ -38,6 +38,9 @@ if is_service_enabled watcher-api watcher-decision-engine watcher-applier; then
38
38
  # Start the watcher components
39
39
  echo_summary "Starting watcher"
40
40
  start_watcher
41
+ elif [[ "$1" == "stack" && "$2" == "test-config" ]]; then
42
+ echo_summary "Configuring tempest for watcher"
43
+ configure_tempest_for_watcher
41
44
  fi
42
45
 
43
46
  if [[ "$1" == "unstack" ]]; then
@@ -0,0 +1,97 @@
1
+ Metadata-Version: 2.1
2
+ Name: python-watcher
3
+ Version: 12.1.0
4
+ Summary: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack-based clouds.
5
+ Home-page: https://docs.openstack.org/watcher/latest/
6
+ Author: OpenStack
7
+ Author-email: openstack-discuss@lists.openstack.org
8
+ Classifier: Environment :: OpenStack
9
+ Classifier: Intended Audience :: Information Technology
10
+ Classifier: Intended Audience :: System Administrators
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: Implementation :: CPython
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Requires-Python: >=3.8
22
+ License-File: LICENSE
23
+ Requires-Dist: apscheduler>=3.5.1
24
+ Requires-Dist: jsonpatch>=1.21
25
+ Requires-Dist: keystoneauth1>=3.4.0
26
+ Requires-Dist: jsonschema>=3.2.0
27
+ Requires-Dist: keystonemiddleware>=4.21.0
28
+ Requires-Dist: lxml>=4.5.1
29
+ Requires-Dist: croniter>=0.3.20
30
+ Requires-Dist: os-resource-classes>=0.4.0
31
+ Requires-Dist: oslo.concurrency>=3.26.0
32
+ Requires-Dist: oslo.cache>=1.29.0
33
+ Requires-Dist: oslo.config>=6.8.0
34
+ Requires-Dist: oslo.context>=2.21.0
35
+ Requires-Dist: oslo.db>=4.44.0
36
+ Requires-Dist: oslo.i18n>=3.20.0
37
+ Requires-Dist: oslo.log>=3.37.0
38
+ Requires-Dist: oslo.messaging>=14.1.0
39
+ Requires-Dist: oslo.policy>=3.6.0
40
+ Requires-Dist: oslo.reports>=1.27.0
41
+ Requires-Dist: oslo.serialization>=2.25.0
42
+ Requires-Dist: oslo.service>=1.30.0
43
+ Requires-Dist: oslo.upgradecheck>=1.3.0
44
+ Requires-Dist: oslo.utils>=3.36.0
45
+ Requires-Dist: oslo.versionedobjects>=1.32.0
46
+ Requires-Dist: PasteDeploy>=1.5.2
47
+ Requires-Dist: pbr>=3.1.1
48
+ Requires-Dist: pecan>=1.3.2
49
+ Requires-Dist: PrettyTable>=0.7.2
50
+ Requires-Dist: gnocchiclient>=7.0.1
51
+ Requires-Dist: python-cinderclient>=3.5.0
52
+ Requires-Dist: python-glanceclient>=2.9.1
53
+ Requires-Dist: python-keystoneclient>=3.15.0
54
+ Requires-Dist: python-monascaclient>=1.12.0
55
+ Requires-Dist: python-neutronclient>=6.7.0
56
+ Requires-Dist: python-novaclient>=14.1.0
57
+ Requires-Dist: python-openstackclient>=3.14.0
58
+ Requires-Dist: python-ironicclient>=2.5.0
59
+ Requires-Dist: SQLAlchemy>=1.2.5
60
+ Requires-Dist: stevedore>=1.28.0
61
+ Requires-Dist: taskflow>=3.8.0
62
+ Requires-Dist: WebOb>=1.8.5
63
+ Requires-Dist: WSME>=0.9.2
64
+ Requires-Dist: networkx>=2.4
65
+ Requires-Dist: microversion_parse>=0.2.1
66
+ Requires-Dist: futurist>=1.8.0
67
+
68
+ =======
69
+ Watcher
70
+ =======
71
+
72
+ .. image:: https://governance.openstack.org/tc/badges/watcher.svg
73
+ :target: https://governance.openstack.org/tc/reference/tags/index.html
74
+
75
+ .. Change things from this point on
76
+
77
+ ..
78
+ Except where otherwise noted, this document is licensed under Creative
79
+ Commons Attribution 3.0 License. You can view the license at:
80
+
81
+ https://creativecommons.org/licenses/by/3.0/
82
+
83
+ OpenStack Watcher provides a flexible and scalable resource optimization
84
+ service for multi-tenant OpenStack-based clouds.
85
+ Watcher provides a robust framework to realize a wide range of cloud
86
+ optimization goals, including the reduction of data center
87
+ operating costs, increased system performance via intelligent virtual machine
88
+ migration, increased energy efficiency and more!
89
+
90
+ * Free software: Apache license
91
+ * Wiki: https://wiki.openstack.org/wiki/Watcher
92
+ * Source: https://opendev.org/openstack/watcher
93
+ * Bugs: https://bugs.launchpad.net/watcher
94
+ * Documentation: https://docs.openstack.org/watcher/latest/
95
+ * Release notes: https://docs.openstack.org/releasenotes/watcher/
96
+ * Design specifications: https://specs.openstack.org/openstack/watcher-specs/
97
+
@@ -244,6 +244,7 @@ releasenotes/notes/audit-versioned-notifications-api-bca7738e16954bad.yaml
244
244
  releasenotes/notes/automatic-triggering-audit-8a9b0540d547db60.yaml
245
245
  releasenotes/notes/background-jobs-ha-9d3cf3fe356f4705.yaml
246
246
  releasenotes/notes/bp-audit-scope-exclude-project-511a7720aac00dff.yaml
247
+ releasenotes/notes/bug-2112187-763bae283e0b736d.yaml
247
248
  releasenotes/notes/build-baremetal-data-model-in-watcher-3023453a47b61dab.yaml
248
249
  releasenotes/notes/cdm-scoping-8d9c307bad46bfa1.yaml
249
250
  releasenotes/notes/centralise-config-opts-95670987dfbdb0e7.yaml
@@ -78,4 +78,3 @@ taskflow = watcher.applier.workflow_engine.default:DefaultWorkFlowEngine
78
78
 
79
79
  [wsgi_scripts]
80
80
  watcher-api-wsgi = watcher.api.wsgi:initialize_wsgi_app
81
-
@@ -0,0 +1 @@
1
+ {"git_version": "8f8d5373", "is_release": true}
@@ -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
+
@@ -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/2024.1} {opts} {packages}
12
12
  setenv =
13
13
  VIRTUAL_ENV={envdir}
14
14
  deps =
@@ -17,14 +17,11 @@ import jsonschema
17
17
 
18
18
  from oslo_log import log
19
19
 
20
- from cinderclient import client as cinder_client
21
20
  from watcher._i18n import _
22
21
  from watcher.applier.actions import base
23
22
  from watcher.common import cinder_helper
24
23
  from watcher.common import exception
25
- from watcher.common import keystone_helper
26
24
  from watcher.common import nova_helper
27
- from watcher.common import utils
28
25
  from watcher import conf
29
26
 
30
27
  CONF = conf.CONF
@@ -70,8 +67,6 @@ class VolumeMigrate(base.BaseAction):
70
67
 
71
68
  def __init__(self, config, osc=None):
72
69
  super(VolumeMigrate, self).__init__(config)
73
- self.temp_username = utils.random_string(10)
74
- self.temp_password = utils.random_string(10)
75
70
  self.cinder_util = cinder_helper.CinderHelper(osc=self.osc)
76
71
  self.nova_util = nova_helper.NovaHelper(osc=self.osc)
77
72
 
@@ -134,83 +129,42 @@ class VolumeMigrate(base.BaseAction):
134
129
 
135
130
  def _can_swap(self, volume):
136
131
  """Judge volume can be swapped"""
132
+ # TODO(sean-k-mooney): rename this to _can_migrate and update
133
+ # tests to reflect that.
137
134
 
135
+ # cinder volume migration can migrate volumes that are not
136
+ # attached to instances or nova can migrate the data for cinder
137
+ # if the volume is in-use. If the volume has no attachments
138
+ # allow cinder to decided if it can be migrated.
138
139
  if not volume.attachments:
139
- return False
140
- instance_id = volume.attachments[0]['server_id']
141
- instance_status = self.nova_util.find_instance(instance_id).status
142
-
143
- if (volume.status == 'in-use' and
144
- instance_status in ('ACTIVE', 'PAUSED', 'RESIZED')):
140
+ LOG.debug(f"volume: {volume.id} has no attachments")
145
141
  return True
146
142
 
147
- return False
148
-
149
- def _create_user(self, volume, user):
150
- """Create user with volume attribute and user information"""
151
- keystone_util = keystone_helper.KeystoneHelper(osc=self.osc)
152
- project_id = getattr(volume, 'os-vol-tenant-attr:tenant_id')
153
- user['project'] = project_id
154
- user['domain'] = keystone_util.get_project(project_id).domain_id
155
- user['roles'] = ['admin']
156
- return keystone_util.create_user(user)
157
-
158
- def _get_cinder_client(self, session):
159
- """Get cinder client by session"""
160
- return cinder_client.Client(
161
- CONF.cinder_client.api_version,
162
- session=session,
163
- endpoint_type=CONF.cinder_client.endpoint_type)
164
-
165
- def _swap_volume(self, volume, dest_type):
166
- """Swap volume to dest_type
167
-
168
- Limitation note: only for compute libvirt driver
169
- """
170
- if not dest_type:
171
- raise exception.Invalid(
172
- message=(_("destination type is required when "
173
- "migration type is swap")))
174
-
175
- if not self._can_swap(volume):
176
- raise exception.Invalid(
177
- message=(_("Invalid state for swapping volume")))
178
-
179
- user_info = {
180
- 'name': self.temp_username,
181
- 'password': self.temp_password}
182
- user = self._create_user(volume, user_info)
183
- keystone_util = keystone_helper.KeystoneHelper(osc=self.osc)
184
- try:
185
- session = keystone_util.create_session(
186
- user.id, self.temp_password)
187
- temp_cinder = self._get_cinder_client(session)
188
-
189
- # swap volume
190
- new_volume = self.cinder_util.create_volume(
191
- temp_cinder, volume, dest_type)
192
- self.nova_util.swap_volume(volume, new_volume)
193
-
194
- # delete old volume
195
- self.cinder_util.delete_volume(volume)
196
-
197
- finally:
198
- keystone_util.delete_user(user)
199
-
200
- return True
143
+ # since it has attachments we need to validate nova's constraints
144
+ instance_id = volume.attachments[0]['server_id']
145
+ instance_status = self.nova_util.find_instance(instance_id).status
146
+ LOG.debug(
147
+ f"volume: {volume.id} is attached to instance: {instance_id} "
148
+ f"in instance status: {instance_status}")
149
+ # NOTE(sean-k-mooney): This used to allow RESIZED which
150
+ # is the resize_verify task state, that is not an acceptable time
151
+ # to migrate volumes, if nova does not block this in the API
152
+ # today that is probably a bug. PAUSED is also questionable but
153
+ # it should generally be safe.
154
+ return (volume.status == 'in-use' and
155
+ instance_status in ('ACTIVE', 'PAUSED'))
201
156
 
202
157
  def _migrate(self, volume_id, dest_node, dest_type):
203
-
204
158
  try:
205
159
  volume = self.cinder_util.get_volume(volume_id)
206
- if self.migration_type == self.SWAP:
207
- if dest_node:
208
- LOG.warning("dest_node is ignored")
209
- return self._swap_volume(volume, dest_type)
160
+ # for backward compatibility map swap to migrate.
161
+ if self.migration_type in (self.SWAP, self.MIGRATE):
162
+ if not self._can_swap(volume):
163
+ raise exception.Invalid(
164
+ message=(_("Invalid state for swapping volume")))
165
+ return self.cinder_util.migrate(volume, dest_node)
210
166
  elif self.migration_type == self.RETYPE:
211
167
  return self.cinder_util.retype(volume, dest_type)
212
- elif self.migration_type == self.MIGRATE:
213
- return self.cinder_util.migrate(volume, dest_node)
214
168
  else:
215
169
  raise exception.Invalid(
216
170
  message=(_("Migration of type '%(migration_type)s' is not "
@@ -11,12 +11,15 @@
11
11
  # under the License.
12
12
 
13
13
  from oslo_context import context
14
+ from oslo_db.sqlalchemy import enginefacade
14
15
  from oslo_log import log
15
16
  from oslo_utils import timeutils
16
17
 
18
+
17
19
  LOG = log.getLogger(__name__)
18
20
 
19
21
 
22
+ @enginefacade.transaction_context_provider
20
23
  class RequestContext(context.RequestContext):
21
24
  """Extends security contexts from the OpenStack common library."""
22
25
 
@@ -15,8 +15,6 @@
15
15
  from oslo_log import log
16
16
 
17
17
  from keystoneauth1.exceptions import http as ks_exceptions
18
- from keystoneauth1 import loading
19
- from keystoneauth1 import session
20
18
  from watcher._i18n import _
21
19
  from watcher.common import clients
22
20
  from watcher.common import exception
@@ -90,35 +88,3 @@ class KeystoneHelper(object):
90
88
  message=(_("Domain name seems ambiguous: %s") %
91
89
  name_or_id))
92
90
  return domains[0]
93
-
94
- def create_session(self, user_id, password):
95
- user = self.get_user(user_id)
96
- loader = loading.get_plugin_loader('password')
97
- auth = loader.load_from_options(
98
- auth_url=CONF.watcher_clients_auth.auth_url,
99
- password=password,
100
- user_id=user_id,
101
- project_id=user.default_project_id)
102
- return session.Session(auth=auth)
103
-
104
- def create_user(self, user):
105
- project = self.get_project(user['project'])
106
- domain = self.get_domain(user['domain'])
107
- _user = self.keystone.users.create(
108
- user['name'],
109
- password=user['password'],
110
- domain=domain,
111
- project=project,
112
- )
113
- for role in user['roles']:
114
- role = self.get_role(role)
115
- self.keystone.roles.grant(
116
- role.id, user=_user.id, project=project.id)
117
- return _user
118
-
119
- def delete_user(self, user):
120
- try:
121
- user = self.get_user(user)
122
- self.keystone.users.delete(user)
123
- except exception.Invalid:
124
- pass
@@ -19,9 +19,7 @@
19
19
  import asyncio
20
20
  import datetime
21
21
  import inspect
22
- import random
23
22
  import re
24
- import string
25
23
 
26
24
  from croniter import croniter
27
25
  import eventlet
@@ -160,12 +158,8 @@ def extend_with_strict_schema(validator_class):
160
158
  StrictDefaultValidatingDraft4Validator = extend_with_default(
161
159
  extend_with_strict_schema(validators.Draft4Validator))
162
160
 
163
- Draft4Validator = validators.Draft4Validator
164
-
165
161
 
166
- def random_string(n):
167
- return ''.join([random.choice(
168
- string.ascii_letters + string.digits) for i in range(n)])
162
+ Draft4Validator = validators.Draft4Validator
169
163
 
170
164
 
171
165
  # Some clients (e.g. MAAS) use asyncio, which isn't compatible with Eventlet.
@@ -13,8 +13,8 @@
13
13
  from logging import config as log_config
14
14
 
15
15
  from alembic import context
16
+ from oslo_db.sqlalchemy import enginefacade
16
17
 
17
- from watcher.db.sqlalchemy import api as sqla_api
18
18
  from watcher.db.sqlalchemy import models
19
19
 
20
20
  # this is the Alembic Config object, which provides
@@ -43,7 +43,7 @@ def run_migrations_online():
43
43
  and associate a connection with the context.
44
44
 
45
45
  """
46
- engine = sqla_api.get_engine()
46
+ engine = enginefacade.writer.get_engine()
47
47
  with engine.connect() as connection:
48
48
  context.configure(connection=connection,
49
49
  target_metadata=target_metadata)