)]}'
{".zuul.yaml":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    name: watcher-tempest-aetos-2025-2"},{"line_number":51,"context_line":"    parent: watcher-tempest-aetos"},{"line_number":52,"context_line":"    override-checkout: stable/2025.2"},{"line_number":53,"context_line":"    vars:"},{"line_number":54,"context_line":"      # real_data are already excluded on parent of watcher-tempest-aetos"},{"line_number":55,"context_line":"      # but we need to include again because we override the variable"},{"line_number":56,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- job:"},{"line_number":59,"context_line":"    name: watcher-tempest-gnocchi-2025-2"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"5f322d9a_843a6699","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":64},"updated":"2026-04-29 15:11:24.000000000","message":"No need to do this. You have run_skipped_action_volume_tests parameter to false by default.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    name: watcher-tempest-aetos-2025-2"},{"line_number":51,"context_line":"    parent: watcher-tempest-aetos"},{"line_number":52,"context_line":"    override-checkout: stable/2025.2"},{"line_number":53,"context_line":"    vars:"},{"line_number":54,"context_line":"      # real_data are already excluded on parent of watcher-tempest-aetos"},{"line_number":55,"context_line":"      # but we need to include again because we override the variable"},{"line_number":56,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- job:"},{"line_number":59,"context_line":"    name: watcher-tempest-gnocchi-2025-2"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"88d2746c_6a1eb4df","line":56,"range":{"start_line":53,"start_character":0,"end_line":56,"end_character":64},"in_reply_to":"5f322d9a_843a6699","updated":"2026-04-30 09:05:22.000000000","message":"modified to have a config.py parameter to enable/disable all tests, and removed the tag and the exclude","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    parent: watcher-tempest-gnocchi"},{"line_number":61,"context_line":"    override-checkout: stable/2025.2"},{"line_number":62,"context_line":"    vars:"},{"line_number":63,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"# stable/2025.1 jobs"},{"line_number":66,"context_line":"- job:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"b3cfb8ef_92a6d6f3","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":2},"updated":"2026-04-29 15:11:24.000000000","message":"ditto","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    parent: watcher-tempest-gnocchi"},{"line_number":61,"context_line":"    override-checkout: stable/2025.2"},{"line_number":62,"context_line":"    vars:"},{"line_number":63,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"# stable/2025.1 jobs"},{"line_number":66,"context_line":"- job:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"909d84c2_c4c662ac","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":2},"in_reply_to":"b3cfb8ef_92a6d6f3","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":68,"context_line":"    parent: watcher-tempest-gnocchi"},{"line_number":69,"context_line":"    override-checkout: stable/2025.1"},{"line_number":70,"context_line":"    vars:"},{"line_number":71,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"- job:"},{"line_number":74,"context_line":"    name: watcher-tempest-prometheus-2025-1"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"01053a74_62ee7c90","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":2},"updated":"2026-04-29 15:11:24.000000000","message":"ditto.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    parent: watcher-tempest-gnocchi"},{"line_number":69,"context_line":"    override-checkout: stable/2025.1"},{"line_number":70,"context_line":"    vars:"},{"line_number":71,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"- job:"},{"line_number":74,"context_line":"    name: watcher-tempest-prometheus-2025-1"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"f51ef2aa_50705bd1","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":2},"in_reply_to":"01053a74_62ee7c90","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    parent: watcher-tempest-prometheus"},{"line_number":76,"context_line":"    override-checkout: stable/2025.1"},{"line_number":77,"context_line":"    vars:"},{"line_number":78,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# stable/2024.2 jobs"},{"line_number":81,"context_line":"- job:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"6f53e787_af35a6b3","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":2},"updated":"2026-04-29 15:11:24.000000000","message":"ditto","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    parent: watcher-tempest-prometheus"},{"line_number":76,"context_line":"    override-checkout: stable/2025.1"},{"line_number":77,"context_line":"    vars:"},{"line_number":78,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(real_load|skipped)\\b.*\\].*"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# stable/2024.2 jobs"},{"line_number":81,"context_line":"- job:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"68aa19c3_7e65a81e","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":2},"in_reply_to":"6f53e787_af35a6b3","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":83,"context_line":"    parent: watcher-tempest-gnocchi"},{"line_number":84,"context_line":"    override-checkout: stable/2024.2"},{"line_number":85,"context_line":"    vars:"},{"line_number":86,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(host_maintenance|real_load|skipped)\\b.*\\].*"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"d1d7cf3a_cf057058","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":2},"updated":"2026-04-29 15:11:24.000000000","message":"ditto.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    parent: watcher-tempest-gnocchi"},{"line_number":84,"context_line":"    override-checkout: stable/2024.2"},{"line_number":85,"context_line":"    vars:"},{"line_number":86,"context_line":"      tempest_exclude_regex: .*\\[.*\\b(host_maintenance|real_load|skipped)\\b.*\\].*"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"c71d3c6a_6cffe554","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":2},"in_reply_to":"d1d7cf3a_cf057058","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"}],"/COMMIT_MSG":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"4a0d3466aa2a85c31b6e9cdb9e499365e16ffa7f","unresolved":true,"context_lines":[{"line_number":13,"context_line":"or fail appropriately when invalid parameters are provided"},{"line_number":14,"context_line":"(resulting in `FAILED` state for both action and action plan)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The test suite covers 14 scenarios across 5 action types:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":" - `test_migrate_instance_deleted` - Verifies action is SKIPPED when"},{"line_number":19,"context_line":"the target instance is deleted between plan creation and execution"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"008919c1_53c9e5ef","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":2},"updated":"2026-04-30 10:01:34.000000000","message":"No need to detail all the verification cases in the commit message. Too long commit message :). Just keeping the ref to the doc where the skip conditions are documented lgtm","commit_id":"d06938d66608e3db24af2a2802c78df325a8475c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"6d1bbda99e14042b8d0641ef75a5cd7c91cb11d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"956490e2_ab6fe051","updated":"2025-11-13 16:22:48.000000000","message":"recheck","commit_id":"64e2fa19f422a43d0e98ac3e7c64264c54b21de9"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"ed503ee8c77536ccb2883ace7bb87d2c7a74d50d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"888a1cd4_898a9130","updated":"2025-11-18 09:18:39.000000000","message":"recheck","commit_id":"b596964c9afb9bc860f748ba32a6f11b20d5273c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a1c878f6e533cd406a5049fed0a97bca1fada561","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3e03514c_4a33e7eb","updated":"2025-11-20 12:27:00.000000000","message":"we dicussed this on irc in the meeting\nim not comoftable having test liek this that are creatign action that we know are invalid\n\nthis shoudl be returning a 400 bad request today and i consider ti a bug that it  is not.","commit_id":"58c1cc06cc5db2aab58aafaf696577d0af276fb6"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"df5d9b7c3c804b421cf43d498381bf8580ab8c15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"98d457bf_f13584f1","in_reply_to":"3e03514c_4a33e7eb","updated":"2026-04-17 11:37:37.000000000","message":"I have refactor the tests to always execute action plan over valid objects. Now instances are created, action plan is created, instance is deleted and action plane is executed. No more fake IDs.\n\nI have also introduce skip actions tests for all the actions, not just migrate","commit_id":"58c1cc06cc5db2aab58aafaf696577d0af276fb6"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"8a17e3d5d54b6970dc1df858916aff547465d223","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ca9da79b_5d5f649b","updated":"2026-04-20 13:43:32.000000000","message":"recheck","commit_id":"0c482abcf03142c8b2f75f57fdc0d8e0159e040a"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"850d8adc96f2c4eda6c2608dd776638139347596","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"dcf1f634_33b90131","updated":"2026-04-28 20:43:34.000000000","message":"I still reviewing each test since there is a lot of them, but I have some feedback on a few things already.\nIt adds 14 new tests, which increases coverage but also increases the total execution time for tempest.\nI was wondering if a few of them could be grouped in a single test, since you are using actuator strategy, it could validate similar checks from the same action pre_condition(). Some of them need to be isolated, like the ones that disable services for example. But I would like to get more feedbacks from the team here.","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"0dfe50570097abde6d46073249568be8097cd684","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"90587e17_57f26e48","updated":"2026-04-21 19:51:01.000000000","message":"recheck","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"91a394f747cfc4b461f0fdd17283bce6790f9105","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"906fe244_3e79fb48","updated":"2026-04-22 07:56:21.000000000","message":"recheck","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d696b75e6299a34bcf2b85854dae8d6a5a29f9ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9cdca4e7_ca1defb4","updated":"2026-04-21 14:55:51.000000000","message":"recheck","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"dc5f98c5_01fdb403","updated":"2026-04-29 15:11:24.000000000","message":"See my notes about config option and jobs configuration.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"65946b44de1455b4654272f717d93050940e476c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"b83d33c9_80a8bc0f","updated":"2026-05-04 06:54:17.000000000","message":"recheck","commit_id":"684983399c7cfc507fd72a983d5b7f6ceccf8b7d"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7b1be662ad15c60976e66049efde5ad58e1cf235","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"09cedd1d_4f46cbbd","updated":"2026-05-05 11:58:18.000000000","message":"FTR, this is being tested in https://review.opendev.org/c/openstack/watcher/+/986756","commit_id":"09e9ac437d3ac66fa4a60610f9f31e559992816a"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"8967b8723d758c615eb006d3925f32e956ca7f2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"9fdf8d18_ed043177","in_reply_to":"09cedd1d_4f46cbbd","updated":"2026-05-06 07:39:42.000000000","message":"Three valid executions on gnocchi, prometheus and aetos jobs:\n- https://a25acb75f11cb0c9520e-a7b7a03b7c6eba11d6936e15ff03e20e.ssl.cf2.rackcdn.com/openstack/036f854f099449148d05e13d703f2817/testr_results.html\n- https://e7633193f973e8bb78ef-936376f0d797b79c661b8217a5ce2a56.ssl.cf5.rackcdn.com/openstack/b10902d5027e4d5fbee6788758e28db7/testr_results.html\n- https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_a8e/openstack/a8e75b4f9e224548b99ada47810cd34e/testr_results.html","commit_id":"09e9ac437d3ac66fa4a60610f9f31e559992816a"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"f95b9a36919a4cfd28885fd79b3b994861b2338f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"eff177e6_4c31b330","updated":"2026-05-07 09:58:28.000000000","message":"recheck","commit_id":"ae7f93a06d963d226e6eaf69c82ce16aa477f7e2"}],"watcher_tempest_plugin/config.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        help\u003d\"Whether or not to run storage zone migration tests.\""},{"line_number":164,"context_line":"    ),"},{"line_number":165,"context_line":"    cfg.BoolOpt("},{"line_number":166,"context_line":"        \"run_skipped_action_volume_tests\","},{"line_number":167,"context_line":"        default\u003dFalse,"},{"line_number":168,"context_line":"        help\u003d\"Whether or not to run skipped action precondition validation \""},{"line_number":169,"context_line":"             \"tests for volume-related actions (volume_migrate). These tests \""}],"source_content_type":"text/x-python","patch_set":15,"id":"60581824_033ffc81","line":166,"range":{"start_line":166,"start_character":9,"end_line":166,"end_character":40},"updated":"2026-04-29 15:11:24.000000000","message":"According to what we have been doing in other cases similar, this parameter should be run_skipped_actions_tests and be applied to all the skipped actions, not only for the volume ones. By default, it would not run any skipping action test. Then you update the configuration of the jobs in the watcher repo only for the release branches that have automatic skipping actions (2026.1 and master)","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        help\u003d\"Whether or not to run storage zone migration tests.\""},{"line_number":164,"context_line":"    ),"},{"line_number":165,"context_line":"    cfg.BoolOpt("},{"line_number":166,"context_line":"        \"run_skipped_action_volume_tests\","},{"line_number":167,"context_line":"        default\u003dFalse,"},{"line_number":168,"context_line":"        help\u003d\"Whether or not to run skipped action precondition validation \""},{"line_number":169,"context_line":"             \"tests for volume-related actions (volume_migrate). These tests \""}],"source_content_type":"text/x-python","patch_set":15,"id":"a527f845_088be075","line":166,"range":{"start_line":166,"start_character":9,"end_line":166,"end_character":40},"in_reply_to":"60581824_033ffc81","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"}],"watcher_tempest_plugin/tests/scenario/test_execute_skipped_actions.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"850d8adc96f2c4eda6c2608dd776638139347596","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    STRATEGY \u003d \"actuator\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def skip_checks(cls):"},{"line_number":43,"context_line":"        super().skip_checks()"},{"line_number":44,"context_line":"        if not CONF.compute_feature_enabled.live_migration:"},{"line_number":45,"context_line":"            raise cls.skipException(\"Live migration is not enabled\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aaca1da_17c3db57","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":19},"updated":"2026-04-28 20:43:34.000000000","message":"For features would be better to use tempest configuration option to skip the class if it is not supported by the release or environment. We have been doing like this https://github.com/openstack/watcher-tempest-plugin/blob/453639049a5cc5d48d41ed6652678f337637aaa3/watcher_tempest_plugin/config.py#L137-L164 which is easier to maintain, easier to configure in jobs and provides a better user documentation.","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"ccaf46da1583bb2036098fd108a745f067386c43","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    STRATEGY \u003d \"actuator\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def skip_checks(cls):"},{"line_number":43,"context_line":"        super().skip_checks()"},{"line_number":44,"context_line":"        if not CONF.compute_feature_enabled.live_migration:"},{"line_number":45,"context_line":"            raise cls.skipException(\"Live migration is not enabled\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"cceb8619_9069bd1a","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":19},"in_reply_to":"9aaca1da_17c3db57","updated":"2026-04-29 14:01:25.000000000","message":"I have removed live_migration checks because we dont perform any migration, as the intention of the tests is to skip them.\nI have also added config.py parameter to run or not storage based tests.\n\nRelated to the decorator, I will keep it, as we are using decorators on some environments to select or deselect tests to run","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    STRATEGY \u003d \"actuator\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def skip_checks(cls):"},{"line_number":43,"context_line":"        super().skip_checks()"},{"line_number":44,"context_line":"        if not CONF.compute_feature_enabled.live_migration:"},{"line_number":45,"context_line":"            raise cls.skipException(\"Live migration is not enabled\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"c91e3874_aa33c5c8","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":19},"in_reply_to":"cceb8619_9069bd1a","updated":"2026-04-30 09:05:22.000000000","message":"I have finally added a parameter to config.py to enable/disable all tests, and deleted the decorator","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"850d8adc96f2c4eda6c2608dd776638139347596","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        self.wait_for_all_action_plans_to_finish()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        _, goal \u003d self.client.show_goal(self.GOAL)"},{"line_number":61,"context_line":"        _, strategy \u003d self.client.show_strategy(self.STRATEGY)"},{"line_number":62,"context_line":"        _, audit_template \u003d self.create_audit_template("},{"line_number":63,"context_line":"            goal[\u0027uuid\u0027], strategy\u003dstrategy[\u0027uuid\u0027])"},{"line_number":64,"context_line":"        _, audit \u003d self.create_audit("},{"line_number":65,"context_line":"            audit_template[\u0027uuid\u0027], parameters\u003d{\"actions\": actions})"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self.assertTrue(test_utils.call_until_true("},{"line_number":68,"context_line":"            func\u003dfunctools.partial(self.has_audit_succeeded, audit[\u0027uuid\u0027]),"},{"line_number":69,"context_line":"            duration\u003d30,"},{"line_number":70,"context_line":"            sleep_for\u003d.5"},{"line_number":71,"context_line":"        ))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        _, action_plans \u003d self.client.list_action_plans("},{"line_number":74,"context_line":"            audit_uuid\u003daudit[\u0027uuid\u0027])"},{"line_number":75,"context_line":"        action_plan \u003d action_plans[\u0027action_plans\u0027][0]"},{"line_number":76,"context_line":"        _, action_plan \u003d self.client.show_action_plan(action_plan[\u0027uuid\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Run pre-execution hook if provided (e.g., delete resources)"},{"line_number":79,"context_line":"        if pre_execution_hook:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a68af15_95d2d791","line":76,"range":{"start_line":60,"start_character":8,"end_line":76,"end_character":74},"updated":"2026-04-28 20:43:34.000000000","message":"this is duplicating what some base class methods already implement like create audit template, create audit and wait, etc..\nany specific reason for not reusing them?","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        self.wait_for_all_action_plans_to_finish()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        _, goal \u003d self.client.show_goal(self.GOAL)"},{"line_number":61,"context_line":"        _, strategy \u003d self.client.show_strategy(self.STRATEGY)"},{"line_number":62,"context_line":"        _, audit_template \u003d self.create_audit_template("},{"line_number":63,"context_line":"            goal[\u0027uuid\u0027], strategy\u003dstrategy[\u0027uuid\u0027])"},{"line_number":64,"context_line":"        _, audit \u003d self.create_audit("},{"line_number":65,"context_line":"            audit_template[\u0027uuid\u0027], parameters\u003d{\"actions\": actions})"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self.assertTrue(test_utils.call_until_true("},{"line_number":68,"context_line":"            func\u003dfunctools.partial(self.has_audit_succeeded, audit[\u0027uuid\u0027]),"},{"line_number":69,"context_line":"            duration\u003d30,"},{"line_number":70,"context_line":"            sleep_for\u003d.5"},{"line_number":71,"context_line":"        ))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        _, action_plans \u003d self.client.list_action_plans("},{"line_number":74,"context_line":"            audit_uuid\u003daudit[\u0027uuid\u0027])"},{"line_number":75,"context_line":"        action_plan \u003d action_plans[\u0027action_plans\u0027][0]"},{"line_number":76,"context_line":"        _, action_plan \u003d self.client.show_action_plan(action_plan[\u0027uuid\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Run pre-execution hook if provided (e.g., delete resources)"},{"line_number":79,"context_line":"        if pre_execution_hook:"}],"source_content_type":"text/x-python","patch_set":14,"id":"2c3bc4a1_35456bd5","line":76,"range":{"start_line":60,"start_character":8,"end_line":76,"end_character":74},"in_reply_to":"2268ccf5_db7ab9c4","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"ccaf46da1583bb2036098fd108a745f067386c43","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        self.wait_for_all_action_plans_to_finish()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        _, goal \u003d self.client.show_goal(self.GOAL)"},{"line_number":61,"context_line":"        _, strategy \u003d self.client.show_strategy(self.STRATEGY)"},{"line_number":62,"context_line":"        _, audit_template \u003d self.create_audit_template("},{"line_number":63,"context_line":"            goal[\u0027uuid\u0027], strategy\u003dstrategy[\u0027uuid\u0027])"},{"line_number":64,"context_line":"        _, audit \u003d self.create_audit("},{"line_number":65,"context_line":"            audit_template[\u0027uuid\u0027], parameters\u003d{\"actions\": actions})"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self.assertTrue(test_utils.call_until_true("},{"line_number":68,"context_line":"            func\u003dfunctools.partial(self.has_audit_succeeded, audit[\u0027uuid\u0027]),"},{"line_number":69,"context_line":"            duration\u003d30,"},{"line_number":70,"context_line":"            sleep_for\u003d.5"},{"line_number":71,"context_line":"        ))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        _, action_plans \u003d self.client.list_action_plans("},{"line_number":74,"context_line":"            audit_uuid\u003daudit[\u0027uuid\u0027])"},{"line_number":75,"context_line":"        action_plan \u003d action_plans[\u0027action_plans\u0027][0]"},{"line_number":76,"context_line":"        _, action_plan \u003d self.client.show_action_plan(action_plan[\u0027uuid\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Run pre-execution hook if provided (e.g., delete resources)"},{"line_number":79,"context_line":"        if pre_execution_hook:"}],"source_content_type":"text/x-python","patch_set":14,"id":"2268ccf5_db7ab9c4","line":76,"range":{"start_line":60,"start_character":8,"end_line":76,"end_character":74},"in_reply_to":"5a68af15_95d2d791","updated":"2026-04-29 14:01:25.000000000","message":"I have check all the duplicated code and create functions for all of them, thanks for raising it","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"ccaf46da1583bb2036098fd108a745f067386c43","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            },"},{"line_number":146,"context_line":"        ]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        def delete_instance():"},{"line_number":149,"context_line":"            self.mgr.servers_client.delete_server(instance[\u0027id\u0027])"},{"line_number":150,"context_line":"            waiters.wait_for_server_termination("},{"line_number":151,"context_line":"                self.mgr.servers_client, instance[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"bb2cdbd7_6b13dc07","line":148,"in_reply_to":"2fddd1f7_d817f8bc","updated":"2026-04-29 14:01:25.000000000","message":"I have moved the _delete_instance function to the base.py file, so we can reuse it on any other test if required","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"850d8adc96f2c4eda6c2608dd776638139347596","unresolved":true,"context_lines":[{"line_number":145,"context_line":"            },"},{"line_number":146,"context_line":"        ]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        def delete_instance():"},{"line_number":149,"context_line":"            self.mgr.servers_client.delete_server(instance[\u0027id\u0027])"},{"line_number":150,"context_line":"            waiters.wait_for_server_termination("},{"line_number":151,"context_line":"                self.mgr.servers_client, instance[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"2fddd1f7_d817f8bc","line":148,"in_reply_to":"3b9e1f29_a50d15dc","updated":"2026-04-28 20:43:34.000000000","message":"\u003e The delete_instance closure is duplicated verbatim in test_migrate_instance_deleted (line 148), test_resize_invalid_instance (line 353), and test_stop_invalid_instance (line 429). The same pattern of deleting a server and waiting for termination appears three times.\n\u003e \n\u003e **Severity**: SUGGESTION | **Confidence**: 0.9\n\u003e \n\u003e **Benefit**: Extracting a shared helper method like _delete_instance(instance_id) would reduce code duplication from 3 identical closures to a single method call, improving maintainability.\n\u003e \n\u003e **Recommendation**:\n\u003e Create a helper method such as `def _delete_instance(self, instance_id)` that wraps the delete_server + wait_for_server_termination pattern. Then reference it in pre_execution_hook via lambda or functools.partial.\n\nPlease fix.","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            },"},{"line_number":146,"context_line":"        ]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        def delete_instance():"},{"line_number":149,"context_line":"            self.mgr.servers_client.delete_server(instance[\u0027id\u0027])"},{"line_number":150,"context_line":"            waiters.wait_for_server_termination("},{"line_number":151,"context_line":"                self.mgr.servers_client, instance[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"c679e6f4_a14c44e6","line":148,"in_reply_to":"bb2cdbd7_6b13dc07","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2df9c7e64b54f1a368fc486690b13de0d2e95b82"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestExecuteSkippedActionsBase(base.BaseInfraOptimScenarioTest):"},{"line_number":31,"context_line":"    \"\"\"Base class for action precondition validation and skip behavior tests\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    # Minimal version required for list data models"},{"line_number":34,"context_line":"    min_microversion \u003d \"1.3\""},{"line_number":35,"context_line":"    # Minimal version required for _create_one_instance_per_host"}],"source_content_type":"text/x-python","patch_set":15,"id":"84a7b623_2e5f21bf","line":32,"updated":"2026-04-29 15:11:24.000000000","message":"you should have test with skip_tests for all the tests related to action skipping, not only for volumes here.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestExecuteSkippedActionsBase(base.BaseInfraOptimScenarioTest):"},{"line_number":31,"context_line":"    \"\"\"Base class for action precondition validation and skip behavior tests\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    # Minimal version required for list data models"},{"line_number":34,"context_line":"    min_microversion \u003d \"1.3\""},{"line_number":35,"context_line":"    # Minimal version required for _create_one_instance_per_host"}],"source_content_type":"text/x-python","patch_set":15,"id":"038d0db8_b99ffe46","line":32,"in_reply_to":"84a7b623_2e5f21bf","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    GOAL \u003d \"unclassified\""},{"line_number":39,"context_line":"    STRATEGY \u003d \"actuator\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def execute_actions_and_validate_states("},{"line_number":42,"context_line":"            self, actions, expected_action_plan_state,"},{"line_number":43,"context_line":"            expected_action_states, pre_execution_hook\u003dNone):"},{"line_number":44,"context_line":"        \"\"\"Create and execute action plan with custom actions."}],"source_content_type":"text/x-python","patch_set":15,"id":"b553c126_412f07ea","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":43},"updated":"2026-04-29 15:11:24.000000000","message":"+1 I personally like to encapsulate the logic to create and run audit and validate states for this particular set of tests for action skipping.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"80512d3ecc61689af51bc9e3f3b545b247c735d7","unresolved":true,"context_lines":[{"line_number":109,"context_line":"class TestExecuteSkippedActionsInstances(TestExecuteSkippedActionsBase):"},{"line_number":110,"context_line":"    \"\"\"Tests for action precondition validation for instance-related actions\"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027actuator\u0027, \u0027skipped\u0027])"},{"line_number":113,"context_line":"    @decorators.idempotent_id(\u0027d8f5c2a1-9b3e-4d7f-8c6a-1e2f3a4b5c6d\u0027)"},{"line_number":114,"context_line":"    def test_migrate_instance_deleted(self):"},{"line_number":115,"context_line":"        \"\"\"Test migration action skipped when instance is deleted\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"bfa831ad_8d32505d","line":112,"range":{"start_line":112,"start_character":52,"end_line":112,"end_character":59},"updated":"2026-04-29 15:11:24.000000000","message":"I\u0027m not sure the \u0027skipped\u0027 attribute is adding any value, tbh. We can filter by class if we want to run only these tests and we have a parameter to skip them.","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"d6c2359406f88f72cbe5850c3afe86a003162736","unresolved":false,"context_lines":[{"line_number":109,"context_line":"class TestExecuteSkippedActionsInstances(TestExecuteSkippedActionsBase):"},{"line_number":110,"context_line":"    \"\"\"Tests for action precondition validation for instance-related actions\"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027actuator\u0027, \u0027skipped\u0027])"},{"line_number":113,"context_line":"    @decorators.idempotent_id(\u0027d8f5c2a1-9b3e-4d7f-8c6a-1e2f3a4b5c6d\u0027)"},{"line_number":114,"context_line":"    def test_migrate_instance_deleted(self):"},{"line_number":115,"context_line":"        \"\"\"Test migration action skipped when instance is deleted\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"af675c01_f4b15436","line":112,"range":{"start_line":112,"start_character":52,"end_line":112,"end_character":59},"in_reply_to":"bfa831ad_8d32505d","updated":"2026-04-30 09:05:22.000000000","message":"Done","commit_id":"2ee391a6c24361e715dd4e49e23b48259cf34e12"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"a4a47cba14aea0c3f2ddaad840a99f34d024b035","unresolved":true,"context_lines":[{"line_number":244,"context_line":"        destination_host \u003d self.get_enabled_compute_nodes()[1][\u0027host\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        instance \u003d self._create_instance(source_host)"},{"line_number":247,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":248,"context_line":"                        self.mgr.servers_client.delete_server, instance[\u0027id\u0027])"},{"line_number":249,"context_line":"        self.wait_for_instances_in_model([instance])"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"523f37fe_ad2a6df7","line":247,"updated":"2026-05-06 14:53:10.000000000","message":"I think this is not needed. IIUC any instance created with _create_instance has a cleanup action added automatically.","commit_id":"5d0792ee650d1b5cfa8c7ed7086c83d6a7c440fe"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"6f5ed10583a31c452d9bbdb4f469c95aa65dcdce","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        destination_host \u003d self.get_enabled_compute_nodes()[1][\u0027host\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        instance \u003d self._create_instance(source_host)"},{"line_number":247,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":248,"context_line":"                        self.mgr.servers_client.delete_server, instance[\u0027id\u0027])"},{"line_number":249,"context_line":"        self.wait_for_instances_in_model([instance])"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9f7a586f_ef0546f9","line":247,"in_reply_to":"523f37fe_ad2a6df7","updated":"2026-05-07 09:08:02.000000000","message":"Deleted","commit_id":"5d0792ee650d1b5cfa8c7ed7086c83d6a7c440fe"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"a4a47cba14aea0c3f2ddaad840a99f34d024b035","unresolved":true,"context_lines":[{"line_number":339,"context_line":"            default_flavor_id)[\u0027flavor\u0027]"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        # Create a flavor identical to the default one"},{"line_number":342,"context_line":"        target_flavor \u003d self.mgr.flavors_client.create_flavor("},{"line_number":343,"context_line":"            name\u003ddata_utils.rand_name(\u0027watcher_resize_flavor\u0027),"},{"line_number":344,"context_line":"            ram\u003ddefault_flavor[\u0027ram\u0027],"},{"line_number":345,"context_line":"            vcpus\u003ddefault_flavor[\u0027vcpus\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"89a38d59_4a6ef955","line":342,"updated":"2026-05-06 14:53:10.000000000","message":"there is a method to create flavors\n\n`flavor_id \u003d self._create_custom_flavor(...)`\n\nWith that you wouldn\u0027t need the explicit addCleanup.","commit_id":"5d0792ee650d1b5cfa8c7ed7086c83d6a7c440fe"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"6f5ed10583a31c452d9bbdb4f469c95aa65dcdce","unresolved":false,"context_lines":[{"line_number":339,"context_line":"            default_flavor_id)[\u0027flavor\u0027]"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        # Create a flavor identical to the default one"},{"line_number":342,"context_line":"        target_flavor \u003d self.mgr.flavors_client.create_flavor("},{"line_number":343,"context_line":"            name\u003ddata_utils.rand_name(\u0027watcher_resize_flavor\u0027),"},{"line_number":344,"context_line":"            ram\u003ddefault_flavor[\u0027ram\u0027],"},{"line_number":345,"context_line":"            vcpus\u003ddefault_flavor[\u0027vcpus\u0027],"}],"source_content_type":"text/x-python","patch_set":25,"id":"df9f105f_f5c95aa6","line":342,"in_reply_to":"89a38d59_4a6ef955","updated":"2026-05-07 09:08:02.000000000","message":"Moved to use _create_custom_flavor","commit_id":"5d0792ee650d1b5cfa8c7ed7086c83d6a7c440fe"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"a4a47cba14aea0c3f2ddaad840a99f34d024b035","unresolved":true,"context_lines":[{"line_number":500,"context_line":"        \"\"\"Test volume_migration action skipped when volume is deleted\"\"\""},{"line_number":501,"context_line":"        # addCleanup is a safety net in case pre_execution_hook is not reached"},{"line_number":502,"context_line":"        volume \u003d self.create_volume(name\u003d\"test_volume_migrate_invalid\")"},{"line_number":503,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":504,"context_line":"                        self.os_admin.volumes_client_latest.delete_volume,"},{"line_number":505,"context_line":"                        volume[\u0027id\u0027])"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        actions \u003d ["},{"line_number":508,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":25,"id":"6c3bf3af_4cbb0116","line":505,"range":{"start_line":503,"start_character":0,"end_line":505,"end_character":37},"updated":"2026-05-06 14:53:10.000000000","message":"I\u0027d say this is not needed even if the pre_execution_hook is not reached. I\u0027d sy any volume created with self.create_volume has automatically a cleanup action . Others may know better about this.","commit_id":"5d0792ee650d1b5cfa8c7ed7086c83d6a7c440fe"},{"author":{"_account_id":28647,"name":"David","display_name":"morenod","email":"dsanzmor@redhat.com","username":"morenod"},"change_message_id":"6f5ed10583a31c452d9bbdb4f469c95aa65dcdce","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        \"\"\"Test volume_migration action skipped when volume is deleted\"\"\""},{"line_number":501,"context_line":"        # addCleanup is a safety net in case pre_execution_hook is not reached"},{"line_number":502,"context_line":"        volume \u003d self.create_volume(name\u003d\"test_volume_migrate_invalid\")"},{"line_number":503,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":504,"context_line":"                        self.os_admin.volumes_client_latest.delete_volume,"},{"line_number":505,"context_line":"                        volume[\u0027id\u0027])"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        actions \u003d ["},{"line_number":508,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a25b4d7_ace65794","line":505,"range":{"start_line":503,"start_character":0,"end_line":505,"end_character":37},"in_reply_to":"6c3bf3af_4cbb0116","updated":"2026-05-07 09:08:02.000000000","message":"deleted the cleanup","commit_id":"5d0792ee650d1b5cfa8c7ed7086c83d6a7c440fe"}]}
