)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"21543c82d930a3b361d8b61a7fb15c0f8dde6af2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cdc96c3a_f7f242a9","updated":"2025-09-26 07:44:36.000000000","message":"Overall it looks good, Earlier tests have some docstring. Since the test is refactored now, Can we add some doc strings to each of the tests just for improving readability?","commit_id":"220e7ed1e8763f04d9bbe87429a7a22de33dc0e7"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"2c20718e481ba8a46d8441cdb6f54ea9c65e4089","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e2ca8bb1_5c4e39df","updated":"2025-09-25 12:25:22.000000000","message":"recheck-rdo","commit_id":"220e7ed1e8763f04d9bbe87429a7a22de33dc0e7"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"42b77cb509c5bb06b8dd2b2383f156f01144013a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ec69f62c_73b3a421","in_reply_to":"cdc96c3a_f7f242a9","updated":"2025-10-01 11:23:20.000000000","message":"Thanks Chandan. I\u0027m adding the ones that I removed.","commit_id":"220e7ed1e8763f04d9bbe87429a7a22de33dc0e7"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d8170710c2489ba24511a423f5cfe705f89f5c11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2d8f06d6_5c38aece","in_reply_to":"cdc96c3a_f7f242a9","updated":"2025-09-30 11:36:18.000000000","message":"Thanks Chandan. I\u0027m adding the ones that I removed. Not planning to add new comments. Most of these are like: create a audit_template, create audit, run action plan. Which I think that don\u0027t add too much here. For some reason I deleted the one when moving code.","commit_id":"220e7ed1e8763f04d9bbe87429a7a22de33dc0e7"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"ed2464aa7554e97c4a5b6e1502e954e9bf0ce70b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c7880a7e_912d1552","updated":"2025-10-07 05:08:59.000000000","message":"lgtm!","commit_id":"7fdca91ebb323df17a1edd49962f10f208ebe552"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"7c94036efc6a6233edce62cff01f2abea17f95cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"336ac8ca_77eea528","updated":"2025-10-04 13:11:58.000000000","message":"recheck\n\ninstance failed to build in time:\n\u0027BUILDING\u0027 !\u003d \u0027ACTIVE\u0027","commit_id":"7fdca91ebb323df17a1edd49962f10f208ebe552"}],"watcher_tempest_plugin/tests/scenario/test_execute_basic_optim.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"10fb73553e45fb73ba5345a8932f2d51eab06164","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        self.wait_for_instances_in_model(instances)"},{"line_number":80,"context_line":"        self.make_host_statistic()"},{"line_number":81,"context_line":"        for instance in instances:"},{"line_number":82,"context_line":"            self.make_instance_statistic(instance)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        _, goal \u003d self.client.show_goal(self.GOAL_NAME)"},{"line_number":85,"context_line":"        _, strategy \u003d self.client.show_strategy(\"basic\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"3df24eee_278b5b31","side":"PARENT","line":82,"updated":"2025-09-26 08:52:00.000000000","message":"I don\u0027t see this call in the new version, was it not needed? The test seems to pass https://afef3cb90e5d6fbbe3e4-1e6c6bc44b22b869bdbf76d87d9eca83.ssl.cf1.rackcdn.com/openstack/03f44f106f8748ecad8e80322e664091/testr_results.html","commit_id":"ba54aab678aa2db21610a20e9597e58edac6a439"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d8170710c2489ba24511a423f5cfe705f89f5c11","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.wait_for_instances_in_model(instances)"},{"line_number":80,"context_line":"        self.make_host_statistic()"},{"line_number":81,"context_line":"        for instance in instances:"},{"line_number":82,"context_line":"            self.make_instance_statistic(instance)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        _, goal \u003d self.client.show_goal(self.GOAL_NAME)"},{"line_number":85,"context_line":"        _, strategy \u003d self.client.show_strategy(\"basic\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"029596b0_c0d1f6cf","side":"PARENT","line":82,"in_reply_to":"3df24eee_278b5b31","updated":"2025-09-30 11:36:18.000000000","message":"correct, it is needed since the strategy use instance metrics in its algorithm. The issue with not failing is another bug that we will have to fix in another patch. Almost all tests returns None if a SUCCEEDED action plan is generated, which is not correct imo. But I\u0027m going to fix in another patch [1]\n\n[1] https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/960381","commit_id":"ba54aab678aa2db21610a20e9597e58edac6a439"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7ac822b15457998b37cd803ac016dff73285c12","unresolved":true,"context_lines":[{"line_number":56,"context_line":"                \"skipping multinode tests.\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027basic\u0027])"},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u002762766a61-dfc4-478c-b80b-86d871227e67\u0027)"},{"line_number":60,"context_line":"    def test_execute_basic_strategy(self):"},{"line_number":61,"context_line":"        \"\"\"Execute an action plan based on the BASIC strategy"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        - create an audit template with the basic strategy"}],"source_content_type":"text/x-python","patch_set":5,"id":"e982f08b_da1092e5","line":60,"range":{"start_line":59,"start_character":0,"end_line":60,"end_character":42},"updated":"2025-10-02 13:05:53.000000000","message":"we dicussted thsi a bit on irc.\n\nthe rename is fine but we shodul keep the idempotent_id\n\nthat shoudl basically never change for the lifetime fo the test even if its moved or renamed\n\n\nyou only really change it if you fundementally change whth the test is testing or if you copy paste it to create a new test.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":true,"context_lines":[{"line_number":56,"context_line":"                \"skipping multinode tests.\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027basic\u0027])"},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u002762766a61-dfc4-478c-b80b-86d871227e67\u0027)"},{"line_number":60,"context_line":"    def test_execute_basic_strategy(self):"},{"line_number":61,"context_line":"        \"\"\"Execute an action plan based on the BASIC strategy"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        - create an audit template with the basic strategy"}],"source_content_type":"text/x-python","patch_set":5,"id":"a4cccaba_2cd464c7","line":60,"range":{"start_line":59,"start_character":0,"end_line":60,"end_character":42},"in_reply_to":"e0201d6d_ab998256","updated":"2025-10-06 15:33:13.000000000","message":"right so in thice case you moved https://opendev.org/openstack/watcher-tempest-plugin/src/commit/abd34b8a1ae89e1c2a7e24ec6627d200cc34d113/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#L54 to here","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":56,"context_line":"                \"skipping multinode tests.\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027basic\u0027])"},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u002762766a61-dfc4-478c-b80b-86d871227e67\u0027)"},{"line_number":60,"context_line":"    def test_execute_basic_strategy(self):"},{"line_number":61,"context_line":"        \"\"\"Execute an action plan based on the BASIC strategy"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        - create an audit template with the basic strategy"}],"source_content_type":"text/x-python","patch_set":5,"id":"e0201d6d_ab998256","line":60,"range":{"start_line":59,"start_character":0,"end_line":60,"end_character":42},"in_reply_to":"e982f08b_da1092e5","updated":"2025-10-02 18:10:42.000000000","message":"agreed. What is actually happening is that I am merging duplicated tests, and keeping them in the strategy test file, and deleting the test_execute_strategies.\nSo since we are running [1] in CI, I decided to keep it here, with the id used in [1]. Makes senses?\n\n[1] https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b54","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"874bc1fbd2e1081c7f4ac4dcbf0b0846f932d7e5","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        self.make_host_statistic()"},{"line_number":76,"context_line":"        for instance in instances:"},{"line_number":77,"context_line":"            self.make_instance_statistic(instance)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        goal_name \u003d self.GOAL"},{"line_number":80,"context_line":"        strategy_name \u003d \"basic\""},{"line_number":81,"context_line":"        audit_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"11d7b674_66648e61","line":78,"updated":"2025-10-02 13:20:32.000000000","message":"in this case pulling the var out is more resonable","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        self.make_host_statistic()"},{"line_number":76,"context_line":"        for instance in instances:"},{"line_number":77,"context_line":"            self.make_instance_statistic(instance)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        goal_name \u003d self.GOAL"},{"line_number":80,"context_line":"        strategy_name \u003d \"basic\""},{"line_number":81,"context_line":"        audit_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"2443082e_0d938dcc","line":78,"in_reply_to":"11d7b674_66648e61","updated":"2025-10-02 18:10:42.000000000","message":"right, I will update in the next PS","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"b3e365c1b4562d64ba916893831971e90aa70bec","unresolved":true,"context_lines":[{"line_number":81,"context_line":"        audit_kwargs \u003d {"},{"line_number":82,"context_line":"            \"parameters\": {"},{"line_number":83,"context_line":"                \"granularity\": 300,"},{"line_number":84,"context_line":"                \"period\": 300,"},{"line_number":85,"context_line":"                \"aggregation_method\": {\"instance\": \"mean\","},{"line_number":86,"context_line":"                                       \"compute_node\": \"mean\"}"},{"line_number":87,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":5,"id":"8464c658_6468a861","line":84,"updated":"2025-10-01 10:00:34.000000000","message":"any reason to change this parameter, or is this a typo?","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"6f22dabda98388eafb23e5a8346081064dd748c1","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        audit_kwargs \u003d {"},{"line_number":82,"context_line":"            \"parameters\": {"},{"line_number":83,"context_line":"                \"granularity\": 300,"},{"line_number":84,"context_line":"                \"period\": 300,"},{"line_number":85,"context_line":"                \"aggregation_method\": {\"instance\": \"mean\","},{"line_number":86,"context_line":"                                       \"compute_node\": \"mean\"}"},{"line_number":87,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":5,"id":"64788716_ff0ba6e6","line":84,"in_reply_to":"71e27a78_7f5722aa","updated":"2025-10-01 12:24:59.000000000","message":"Ack, I missed that the test was duplicated, thanks!","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"42b77cb509c5bb06b8dd2b2383f156f01144013a","unresolved":true,"context_lines":[{"line_number":81,"context_line":"        audit_kwargs \u003d {"},{"line_number":82,"context_line":"            \"parameters\": {"},{"line_number":83,"context_line":"                \"granularity\": 300,"},{"line_number":84,"context_line":"                \"period\": 300,"},{"line_number":85,"context_line":"                \"aggregation_method\": {\"instance\": \"mean\","},{"line_number":86,"context_line":"                                       \"compute_node\": \"mean\"}"},{"line_number":87,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":5,"id":"71e27a78_7f5722aa","line":84,"in_reply_to":"8464c658_6468a861","updated":"2025-10-01 11:23:20.000000000","message":"yes, there is. We were running the same test from \u0027test_execute_strategies\u0027[1], which has the period set to 300 there. The fake metrics injection is also generating metrics for 300s (10 samples with 30s interval), so I guess that make more sense to keep 300 here.\n\n[1] https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"}],"watcher_tempest_plugin/tests/scenario/test_execute_dummy_optim.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    \"\"\"Tests for action plans\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027dummy\u0027])"},{"line_number":27,"context_line":"    @decorators.idempotent_id(\u0027a660e484-da76-478c-b18c-2eff243dde48\u0027)"},{"line_number":28,"context_line":"    def test_execute_dummy_strategy(self):"},{"line_number":29,"context_line":"        \"\"\"Execute an action plan based on the \u0027dummy\u0027 strategy"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"74125581_ae75b5b2","line":27,"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b77","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \"\"\"Tests for action plans\"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027dummy\u0027])"},{"line_number":27,"context_line":"    @decorators.idempotent_id(\u0027a660e484-da76-478c-b18c-2eff243dde48\u0027)"},{"line_number":28,"context_line":"    def test_execute_dummy_strategy(self):"},{"line_number":29,"context_line":"        \"\"\"Execute an action plan based on the \u0027dummy\u0027 strategy"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aa1ead5_d5e1d629","line":27,"in_reply_to":"74125581_ae75b5b2","updated":"2025-10-06 15:33:13.000000000","message":"ack it was \nhttps://opendev.org/openstack/watcher-tempest-plugin/src/commit/abd34b8a1ae89e1c2a7e24ec6627d200cc34d113/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#L77","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"874bc1fbd2e1081c7f4ac4dcbf0b0846f932d7e5","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        - get results and make sure it succeeded"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        goal_name \u003d \"dummy\""},{"line_number":39,"context_line":"        strategy_name \u003d \"dummy\""},{"line_number":40,"context_line":"        audit_kwargs \u003d dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.execute_strategy(goal_name, strategy_name,"},{"line_number":43,"context_line":"                              expected_actions\u003d[\u0027sleep\u0027, \u0027nop\u0027],"},{"line_number":44,"context_line":"                              **audit_kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"22e4c466_5f7a5b36","line":44,"range":{"start_line":38,"start_character":8,"end_line":44,"end_character":45},"updated":"2025-10-02 13:20:32.000000000","message":"why are you definign these as vars at all ?\n\n```suggestion\n        self.execute_strategy(\n            \"dummy\", \"dummy\", expected_actions\u003d[\u0027sleep\u0027, \u0027nop\u0027])\n```","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        - get results and make sure it succeeded"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        goal_name \u003d \"dummy\""},{"line_number":39,"context_line":"        strategy_name \u003d \"dummy\""},{"line_number":40,"context_line":"        audit_kwargs \u003d dict()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.execute_strategy(goal_name, strategy_name,"},{"line_number":43,"context_line":"                              expected_actions\u003d[\u0027sleep\u0027, \u0027nop\u0027],"},{"line_number":44,"context_line":"                              **audit_kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3582122c_674177da","line":44,"range":{"start_line":38,"start_character":8,"end_line":44,"end_character":45},"in_reply_to":"22e4c466_5f7a5b36","updated":"2025-10-02 18:10:42.000000000","message":"right, not needed, we can simplify as you suggested. Tks","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"}],"watcher_tempest_plugin/tests/scenario/test_execute_node_resource_consolidation.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"874bc1fbd2e1081c7f4ac4dcbf0b0846f932d7e5","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"},{"line_number":44,"context_line":"    def resource_setup(cls):"},{"line_number":45,"context_line":"        super().resource_setup()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cls.wait_for_compute_node_setup()"},{"line_number":48,"context_line":"        enabled_compute_nodes \u003d cls.get_enabled_compute_nodes()"},{"line_number":49,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":50,"context_line":"            raise cls.skipException("},{"line_number":51,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":52,"context_line":"                \"skipping multinode tests.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":55,"context_line":"    @decorators.idempotent_id(\u0027c0c061e9-4713-4a23-a6e1-5db794add685\u0027)"},{"line_number":56,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_auto(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"99df303d_f4654b6d","line":53,"range":{"start_line":45,"start_character":3,"end_line":53,"end_character":1},"updated":"2025-10-02 13:20:32.000000000","message":"again i think this is incorrect.\n\nnot that we shoudl not do this check but that it shoudl be in \n\nskip_checks\n\nand cls.wait_for_compute_node_setup() shoudl not actually need to exist in the tempest plugin at all.\n\nthe nova comptues that are show in the hyperviors list are retuired to be up as part of the openstack isntallation before we ever move to executing tempst\n\nthat is true of both devstack and outer isntaller like oko or kolla\n\nwe shoudl strongly condier rfemoving the   wait_for_compute_node_setup() form the tempest plugin.\n\nwe defintly shoudl not be doing a hypervior list before every test case. even if we only do it once per test class.\n\nchecking if the comptue nodes are enabled is a littel more resonable but we shoudl never leave a compute in a disabled state after a test if it was enabled prior to the test so in thory thhis shoudl also not be required.\n\nthis pattern is a performance proplem as we add more test coverage so we shoudl think carefully before cargo culting this to new tests and consider if we can remove it form the existign ones.\n\nin gneral dymicly skiping test based on the runtime state of the cloud si considered a tempest anti patten as you generally want the job to fail if oen test fails to clean up after its self by ensuring the node are enabeld for example.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e144ec86f7ac0179c60d847fb454145f0fe8e27","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"},{"line_number":44,"context_line":"    def resource_setup(cls):"},{"line_number":45,"context_line":"        super().resource_setup()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cls.wait_for_compute_node_setup()"},{"line_number":48,"context_line":"        enabled_compute_nodes \u003d cls.get_enabled_compute_nodes()"},{"line_number":49,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":50,"context_line":"            raise cls.skipException("},{"line_number":51,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":52,"context_line":"                \"skipping multinode tests.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":55,"context_line":"    @decorators.idempotent_id(\u0027c0c061e9-4713-4a23-a6e1-5db794add685\u0027)"},{"line_number":56,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_auto(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"a57d1813_d21d1d5d","line":53,"range":{"start_line":45,"start_character":3,"end_line":53,"end_character":1},"in_reply_to":"1b6e43cf_3b4fa9ed","updated":"2025-10-06 15:44:06.000000000","message":"ok while i woudl prefer if https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/963007 was done prior to this\n\nim ok with considerign this reloved by that change.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"},{"line_number":44,"context_line":"    def resource_setup(cls):"},{"line_number":45,"context_line":"        super().resource_setup()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cls.wait_for_compute_node_setup()"},{"line_number":48,"context_line":"        enabled_compute_nodes \u003d cls.get_enabled_compute_nodes()"},{"line_number":49,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":50,"context_line":"            raise cls.skipException("},{"line_number":51,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":52,"context_line":"                \"skipping multinode tests.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":55,"context_line":"    @decorators.idempotent_id(\u0027c0c061e9-4713-4a23-a6e1-5db794add685\u0027)"},{"line_number":56,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_auto(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1b6e43cf_3b4fa9ed","line":53,"range":{"start_line":45,"start_character":3,"end_line":53,"end_character":1},"in_reply_to":"4954f9a3_057aec34","updated":"2025-10-06 15:33:13.000000000","message":"https://docs.openstack.org/tempest/latest/write_tests.html#setupclass\n\nok so based on that the order is\n\n```\n    skip_checks\n    setup_credentials\n    setup_clients\n    resource_setup\n```\n\nso you using resource_setup because you need the client adn the creditals to be in place to do that check.\n\n\nam form an upstream tempets point of view if test a alters the state fo the cloud such that test b later fails thats a bug in test A\n\nso if a test modifies the enabled state of a compute service and fails to reture it thats a bug that should cause test A to fail.\n\nso if we had a set_compute_disbaled helper\n\nit shroud register a cleanup function to set the compute to enabled and if that fails it should cause The test suite to fail.\n\nwo do not want to skip tests in that event because it might allwo incorrect code to merge that breaks sometihng because a test was skiped.\n\nin other words if we have a gate jobs that expect to run test_execute_node_resource_consolidation_strategy_with_auto because of how we have configured the could in the job, i.e. to have 2 enabled computes in this case.\nthen this test should fail not be spiked.\n\ntempest tests are expected to skpip only based on regex or config option not the runtime state of the cloud. the enabled sate of the compute service is runtime state so that why im pushing back on this pattern.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"},{"line_number":44,"context_line":"    def resource_setup(cls):"},{"line_number":45,"context_line":"        super().resource_setup()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cls.wait_for_compute_node_setup()"},{"line_number":48,"context_line":"        enabled_compute_nodes \u003d cls.get_enabled_compute_nodes()"},{"line_number":49,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":50,"context_line":"            raise cls.skipException("},{"line_number":51,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":52,"context_line":"                \"skipping multinode tests.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":55,"context_line":"    @decorators.idempotent_id(\u0027c0c061e9-4713-4a23-a6e1-5db794add685\u0027)"},{"line_number":56,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_auto(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"4954f9a3_057aec34","line":53,"range":{"start_line":45,"start_character":3,"end_line":53,"end_character":1},"in_reply_to":"99df303d_f4654b6d","updated":"2025-10-02 18:10:42.000000000","message":"I agree with your points here. I also want to rewrite all of this. The reason for being in resource_setup is that it needs the proper credentials to list theses resources and check states. I think that if we don\u0027t have enough compute nodes enabled, we should actually fail, since the skip validations are already made in skip_checks().\nSo, what would happen next if a test fails to rollback the compute service status? Maybe is still good to fail earlier based on that. We can have this check (of minimal 2 compute services) at the beggining of each test.\nI could work on that in the next patch in the series[1]. But we can\u0027t delete it now, since rollback_compute_nodes_status() needs cls.initial_compute_nodes_setup to be set. We need to rewrite this again. I will do that in the next patch if you agree[1].\n\n[1] https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/960310","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":52,"context_line":"                \"skipping multinode tests.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":55,"context_line":"    @decorators.idempotent_id(\u0027c0c061e9-4713-4a23-a6e1-5db794add685\u0027)"},{"line_number":56,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_auto(self):"},{"line_number":57,"context_line":"        # This test does not require metrics injection"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"eac6e0ac_11664bed","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":69},"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b198","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                \"skipping multinode tests.\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":55,"context_line":"    @decorators.idempotent_id(\u0027c0c061e9-4713-4a23-a6e1-5db794add685\u0027)"},{"line_number":56,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_auto(self):"},{"line_number":57,"context_line":"        # This test does not require metrics injection"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a464b2a_cf70f500","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":69},"in_reply_to":"eac6e0ac_11664bed","updated":"2025-10-06 15:33:13.000000000","message":"Ack https://opendev.org/openstack/watcher-tempest-plugin/src/commit/abd34b8a1ae89e1c2a7e24ec6627d200cc34d113/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#L198","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        self.execute_strategy(goal_name, strategy_name, **audit_kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":76,"context_line":"    @decorators.idempotent_id(\u002712312f2b-ff7a-4722-9aa3-0262608e1ef0\u0027)"},{"line_number":77,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_specify(self):"},{"line_number":78,"context_line":"        # This test does not require metrics injection"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"a9c6161e_e880fca5","line":76,"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b218","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.execute_strategy(goal_name, strategy_name, **audit_kwargs)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027node_resource_consolidation\u0027])"},{"line_number":76,"context_line":"    @decorators.idempotent_id(\u002712312f2b-ff7a-4722-9aa3-0262608e1ef0\u0027)"},{"line_number":77,"context_line":"    def test_execute_node_resource_consolidation_strategy_with_specify(self):"},{"line_number":78,"context_line":"        # This test does not require metrics injection"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"37291984_0514426b","line":76,"in_reply_to":"a9c6161e_e880fca5","updated":"2025-10-06 15:33:13.000000000","message":"Ack https://opendev.org/openstack/watcher-tempest-plugin/src/commit/abd34b8a1ae89e1c2a7e24ec6627d200cc34d113/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#L218","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"}],"watcher_tempest_plugin/tests/scenario/test_execute_storage_balance.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"10fb73553e45fb73ba5345a8932f2d51eab06164","unresolved":true,"context_lines":[{"line_number":44,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        if len(set(CONF.volume.backend_names)) \u003c 2:"},{"line_number":47,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":48,"context_line":"                                    \"backend names\")"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @decorators.idempotent_id(\u002708d96b1f-6186-4e45-8d3d-61e20b700150\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d0bd584c_84882353","side":"PARENT","line":47,"updated":"2025-09-26 08:52:00.000000000","message":"I have not reviewed this strategy in enough depth to know if this condition for multiple backends is required or not, but I would not remove it in this refactor","commit_id":"ba54aab678aa2db21610a20e9597e58edac6a439"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d8170710c2489ba24511a423f5cfe705f89f5c11","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        if len(set(CONF.volume.backend_names)) \u003c 2:"},{"line_number":47,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":48,"context_line":"                                    \"backend names\")"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @decorators.idempotent_id(\u002708d96b1f-6186-4e45-8d3d-61e20b700150\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0ba1a436_2a9e7ef6","side":"PARENT","line":47,"in_reply_to":"d0bd584c_84882353","updated":"2025-09-30 11:36:18.000000000","message":"ack, i will add that back, it is not part of this change to change individual tests, we can review and fix this in another change. Thanks!","commit_id":"ba54aab678aa2db21610a20e9597e58edac6a439"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":41,"context_line":"                                    \"backend names\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00277e3a9195-acc5-40cf-96da-a0a2883294d3\u0027)"},{"line_number":44,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027storage_capacity_balance\u0027])"},{"line_number":45,"context_line":"    def test_execute_storage_capacity_balance_strategy(self):"},{"line_number":46,"context_line":"        self.create_volume(imageRef\u003dCONF.compute.image_ref, size\u003d3)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fb08b9d_3614db7c","line":43,"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b102","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":41,"context_line":"                                    \"backend names\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00277e3a9195-acc5-40cf-96da-a0a2883294d3\u0027)"},{"line_number":44,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027storage_capacity_balance\u0027])"},{"line_number":45,"context_line":"    def test_execute_storage_capacity_balance_strategy(self):"},{"line_number":46,"context_line":"        self.create_volume(imageRef\u003dCONF.compute.image_ref, size\u003d3)"}],"source_content_type":"text/x-python","patch_set":5,"id":"00a76568_7cefa899","line":43,"in_reply_to":"3fb08b9d_3614db7c","updated":"2025-10-06 15:33:13.000000000","message":"https://opendev.org/openstack/watcher-tempest-plugin/src/commit/abd34b8a1ae89e1c2a7e24ec6627d200cc34d113/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#L87 +1","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"}],"watcher_tempest_plugin/tests/scenario/test_execute_vm_workload_consolidation.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":56,"context_line":"                \"skipping multinode tests.\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027vm_workload_consolidation\u0027])"},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u00279f3ee978-e033-4c1e-bbf2-9e5a5cb8a365\u0027)"},{"line_number":60,"context_line":"    def test_execute_vm_workload_consolidation_strategy(self):"},{"line_number":61,"context_line":"        \"\"\"Execute an action plan of vm_workload_consolidation strategy"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b345bebe_1c60d37e","line":59,"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b102","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                \"skipping multinode tests.\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027vm_workload_consolidation\u0027])"},{"line_number":59,"context_line":"    @decorators.idempotent_id(\u00279f3ee978-e033-4c1e-bbf2-9e5a5cb8a365\u0027)"},{"line_number":60,"context_line":"    def test_execute_vm_workload_consolidation_strategy(self):"},{"line_number":61,"context_line":"        \"\"\"Execute an action plan of vm_workload_consolidation strategy"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"75f1b2a3_44987f3d","line":59,"in_reply_to":"b345bebe_1c60d37e","updated":"2025-10-06 15:33:13.000000000","message":"https://opendev.org/openstack/watcher-tempest-plugin/src/commit/abd34b8a1ae89e1c2a7e24ec6627d200cc34d113/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#L102","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"b3e365c1b4562d64ba916893831971e90aa70bec","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        strategy_name \u003d \"vm_workload_consolidation\""},{"line_number":89,"context_line":"        audit_kwargs \u003d {"},{"line_number":90,"context_line":"            \"parameters\": {"},{"line_number":91,"context_line":"                \"period\": 300,"},{"line_number":92,"context_line":"            }"},{"line_number":93,"context_line":"        }"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7c2f8ca2_7fad8c40","line":91,"updated":"2025-10-01 10:00:34.000000000","message":"same point about changing the `period` value. If there is a reason to change it we should document it in the commmit msg, if not we should keep the original value in this patch imo.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"42b77cb509c5bb06b8dd2b2383f156f01144013a","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        strategy_name \u003d \"vm_workload_consolidation\""},{"line_number":89,"context_line":"        audit_kwargs \u003d {"},{"line_number":90,"context_line":"            \"parameters\": {"},{"line_number":91,"context_line":"                \"period\": 300,"},{"line_number":92,"context_line":"            }"},{"line_number":93,"context_line":"        }"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"8282e6eb_8696a0eb","line":91,"in_reply_to":"7c2f8ca2_7fad8c40","updated":"2025-10-01 11:23:20.000000000","message":"The reason is that this patch is removing duplicate tests. There are 2 tests doing the same thing, here and in \u0027test_execute_strategy\u0027. So this configuration is being deleted in favor of the one in \u0027test_execute_strategy\u0027, that is being running in CI. For fake metrics, makes more sense to keep the period to 300s, which is the default in inject metrics method.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"6f22dabda98388eafb23e5a8346081064dd748c1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        strategy_name \u003d \"vm_workload_consolidation\""},{"line_number":89,"context_line":"        audit_kwargs \u003d {"},{"line_number":90,"context_line":"            \"parameters\": {"},{"line_number":91,"context_line":"                \"period\": 300,"},{"line_number":92,"context_line":"            }"},{"line_number":93,"context_line":"        }"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"82f9d21d_75bd0fba","line":91,"in_reply_to":"8282e6eb_8696a0eb","updated":"2025-10-01 12:24:59.000000000","message":"Acknowledged","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"}],"watcher_tempest_plugin/tests/scenario/test_execute_workload_stabilization.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"874bc1fbd2e1081c7f4ac4dcbf0b0846f932d7e5","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":49,"context_line":"            raise cls.skipException("},{"line_number":50,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":51,"context_line":"                \"skipping multinode tests.\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027workload_stabilization\u0027])"},{"line_number":54,"context_line":"    @decorators.idempotent_id(\u002714360d59-4923-49f7-bfe5-31d6a819b6f7\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"e10dbe5a_28b0e877","line":51,"updated":"2025-10-02 13:20:32.000000000","message":"same comment here\nwe either shoudl remove resource_setup entirly \nor the check shoudl be done in skip_checks but i would prefer to do the former.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b37143129518218c806d739b692492916c58053","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":49,"context_line":"            raise cls.skipException("},{"line_number":50,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":51,"context_line":"                \"skipping multinode tests.\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027workload_stabilization\u0027])"},{"line_number":54,"context_line":"    @decorators.idempotent_id(\u002714360d59-4923-49f7-bfe5-31d6a819b6f7\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fd92ed3a_8ebfca6e","line":51,"in_reply_to":"bf27fcc7_fa70c2f4","updated":"2025-10-06 15:33:13.000000000","message":"we coudl check but we cant skip we woudl have to reprot failed.\n\nas noted in my reply the set of test that run shoudl not depend on the order of the test or the runtime state of the cloud it shoudl be based only on the regex and confifig options.\n\nyou can fail the test based on not enough enabled node but you shoudl not skip it.","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        if len(enabled_compute_nodes) \u003c 2:"},{"line_number":49,"context_line":"            raise cls.skipException("},{"line_number":50,"context_line":"                \"Less than 2 compute nodes are enabled, \""},{"line_number":51,"context_line":"                \"skipping multinode tests.\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027workload_stabilization\u0027])"},{"line_number":54,"context_line":"    @decorators.idempotent_id(\u002714360d59-4923-49f7-bfe5-31d6a819b6f7\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf27fcc7_fa70c2f4","line":51,"in_reply_to":"e10dbe5a_28b0e877","updated":"2025-10-02 18:10:42.000000000","message":"as mentioned in the other comment. I think that is still valueble to check if there is a minimal of 2 compute services enabled. I don\u0027t agree that we should skip if there is not enough compute services enabled, I think that we should fail. We should only skip if: CONF.compute.min_compute_nodes \u003c 2.\nI can\u0027t delete before refactoring rollback_compute_nodes_status().","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":51,"context_line":"                \"skipping multinode tests.\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027workload_stabilization\u0027])"},{"line_number":54,"context_line":"    @decorators.idempotent_id(\u002714360d59-4923-49f7-bfe5-31d6a819b6f7\u0027)"},{"line_number":55,"context_line":"    def test_execute_workload_stabilization_strategy_cpu(self):"},{"line_number":56,"context_line":"        # This test requires metrics injection"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fe75d04a_954e3468","line":54,"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b132","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d58d15213ad60ec487d723f973db288279a7ab88","unresolved":true,"context_lines":[{"line_number":86,"context_line":"                              expected_actions\u003d[\u0027migrate\u0027], **audit_kwargs)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @decorators.attr(type\u003d[\u0027strategy\u0027, \u0027workload_stabilization\u0027])"},{"line_number":89,"context_line":"    @decorators.idempotent_id(\u00274988b894-b237-4ebc-9af1-ecf1f9ea734e\u0027)"},{"line_number":90,"context_line":"    def test_execute_workload_stabilization_strategy_ram(self):"},{"line_number":91,"context_line":"        # This test requires metrics injection"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"235c35e1_71671917","line":89,"updated":"2025-10-02 18:10:42.000000000","message":"from: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762/5/watcher_tempest_plugin/tests/scenario/test_execute_strategies.py#b166","commit_id":"ccdf47c425268cb6fa2526cac1ef707bcc9f6903"}]}
