)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"93d078575c2f213b7e4a7e72eb69071143dc03d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3bf788a1_70b83ec3","updated":"2025-08-18 08:57:24.000000000","message":"@viroel@gmail.com Thank you for the patch, Overall it looks good.\nI can see API tests are running in https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_4c9/openstack/4c9ec533dd8b4a83b816983ed9a2af8d/testr_results.html watcher-tempest-functional job\n\nScenario datamodel tests are running only in rdo third party EDPM job https://logserver.rdoproject.org/5e0/rdoproject.org/5e05e0a71d2247389752868626ba20b9/controller/ci-framework-data/tests/test_operator/tempest-tests-tempest/stestr_results.html But not in watcher-promotheus-integration or any other opendev zuul job.\n\nDo we want to enable them in opendev zuul job (may be in promottehus integration job)?","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"f2a85554a30a095245dafe1ea951b8aa9f80fada","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5860c262_8c1f1baa","updated":"2025-09-01 09:25:45.000000000","message":"Overall it looks good.","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"c97fb5e5efc9dae40fcac4f804dab2309099f343","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"080e2d34_224bedb7","updated":"2025-09-01 09:15:11.000000000","message":"recheck after https://review.opendev.org/c/openstack/watcher/+/955827 tests added","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"5095bd993dfdaf1b4b1534a2fdd2fa1e33633efb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"246e292c_516e3fe1","updated":"2025-09-01 10:42:58.000000000","message":"recheck tempest failure","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"fef8f383b78b2c3df8205c9cd82b306e8b94a9bf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"effa668e_d47df993","in_reply_to":"3bf788a1_70b83ec3","updated":"2025-08-18 12:18:55.000000000","message":"yes, thanks for checking, I am missing the regex update, or add a new label, since the strategy one doesn\u0027t match with the tests here. I will propose an update, thanks!","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"ea589aef5cc499b3104deacfabb0e377a84333c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6a615e56_5f87b47b","updated":"2025-09-03 04:51:26.000000000","message":"Tempest tests passing\nhttps://c147281a6742ad573643-b429f7b1939d4fc1f35718a4403a0d7a.ssl.cf2.rackcdn.com/openstack/b8f2534667544989bf043113ada90c61/testr_results.html and https://b269ad2f5103eefaeb6b-6d8b7cde59daae87cebda88f7b508422.ssl.cf1.rackcdn.com/openstack/2e4aa2a21a9f46fcbc15daec67f0bc89/testr_results.html looks good!","commit_id":"ab83792129a80488c40d3048433e7c791ee209d1"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"23940a7d046f7e29be184b9af7928fd9de6a07af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"aefa2d69_e2f89d82","updated":"2025-09-03 04:48:37.000000000","message":"check-rdo","commit_id":"ab83792129a80488c40d3048433e7c791ee209d1"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"71ff219c08c24db97aa18dd5e9d43fdc55507f13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0b771a3e_184781dd","updated":"2025-09-03 05:20:00.000000000","message":"lgtm, thanks!","commit_id":"ab83792129a80488c40d3048433e7c791ee209d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3ca6c54edbb2034ce2e10e00f78c07d8bd30d9c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ef1721ce_68ade28a","updated":"2025-09-30 12:52:18.000000000","message":"this is ok. there are some general test patterns that i dont think are idomatic for tempst test that we could impove but its not enought to hold the patch","commit_id":"a1df4d09be9279e4fe30a0fbaf86ee0b5bdf7898"}],"watcher_tempest_plugin/tests/api/admin/test_data_model.py":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"f2a85554a30a095245dafe1ea951b8aa9f80fada","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.assertIn(\u0027context\u0027, body)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        # NOTE(dviroel): list data model returns returns at least"},{"line_number":38,"context_line":"        # one element for each compute node. But we don\u0027t want to"},{"line_number":39,"context_line":"        # if there is no enabled compute nodes."},{"line_number":40,"context_line":"        if len(body[\u0027context\u0027]) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6fe7133a_62782e12","line":37,"range":{"start_line":37,"start_character":41,"end_line":37,"end_character":56},"updated":"2025-09-01 09:25:45.000000000","message":"We can drop one returns","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"507d1e4ebd88553e624b12615bf1c91eb60787b3","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.assertIn(\u0027context\u0027, body)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        # NOTE(dviroel): list data model returns returns at least"},{"line_number":38,"context_line":"        # one element for each compute node. But we don\u0027t want to"},{"line_number":39,"context_line":"        # if there is no enabled compute nodes."},{"line_number":40,"context_line":"        if len(body[\u0027context\u0027]) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"c02dfa23_57acf2e5","line":37,"range":{"start_line":37,"start_character":41,"end_line":37,"end_character":56},"in_reply_to":"6fe7133a_62782e12","updated":"2025-09-02 17:49:01.000000000","message":"Done","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"94403dc6f0745e429b44534576678d9c46e82e26","unresolved":true,"context_lines":[{"line_number":45,"context_line":"            expected_fields \u003d set(["},{"line_number":46,"context_line":"                \u0027node_hostname\u0027, \u0027node_uuid\u0027, \u0027node_vcpus\u0027, \u0027node_memory\u0027,"},{"line_number":47,"context_line":"                \u0027node_state\u0027, \u0027node_vcpu_ratio\u0027, \u0027node_vcpu_reserved\u0027])"},{"line_number":48,"context_line":"            self.assertTrue(expected_fields.issubset(set(context_keys)))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class TestNegativeListDataModel(base.BaseInfraOptimTest):"}],"source_content_type":"text/x-python","patch_set":1,"id":"31fd7b28_c768c94b","line":48,"updated":"2025-08-29 12:31:37.000000000","message":"I think we should loop over all compute nodes and check the fields for all them. It\u0027s unlikely that we would have a bug that would only populated the fields for some nodes, but checking them should be cheap and easy","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"507d1e4ebd88553e624b12615bf1c91eb60787b3","unresolved":true,"context_lines":[{"line_number":45,"context_line":"            expected_fields \u003d set(["},{"line_number":46,"context_line":"                \u0027node_hostname\u0027, \u0027node_uuid\u0027, \u0027node_vcpus\u0027, \u0027node_memory\u0027,"},{"line_number":47,"context_line":"                \u0027node_state\u0027, \u0027node_vcpu_ratio\u0027, \u0027node_vcpu_reserved\u0027])"},{"line_number":48,"context_line":"            self.assertTrue(expected_fields.issubset(set(context_keys)))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class TestNegativeListDataModel(base.BaseInfraOptimTest):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3b9678f6_6a995f05","line":48,"in_reply_to":"31fd7b28_c768c94b","updated":"2025-09-02 17:49:01.000000000","message":"yes, we can do this. But I thing that is better to do this in the scenario test instead, since here we would like to just test the api request/response, not the content. let me know if makes sense, while I update the scenario test. Thanks Joan","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"71ff219c08c24db97aa18dd5e9d43fdc55507f13","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            expected_fields \u003d set(["},{"line_number":46,"context_line":"                \u0027node_hostname\u0027, \u0027node_uuid\u0027, \u0027node_vcpus\u0027, \u0027node_memory\u0027,"},{"line_number":47,"context_line":"                \u0027node_state\u0027, \u0027node_vcpu_ratio\u0027, \u0027node_vcpu_reserved\u0027])"},{"line_number":48,"context_line":"            self.assertTrue(expected_fields.issubset(set(context_keys)))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class TestNegativeListDataModel(base.BaseInfraOptimTest):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9472c4a7_9ce6fbca","line":48,"in_reply_to":"3b9678f6_6a995f05","updated":"2025-09-03 05:20:00.000000000","message":"that make sense, I\u0027m checking the scenario test, thanks Doug!","commit_id":"11e78d607f5c5d928e964447121a6a8adfe2f190"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3ca6c54edbb2034ce2e10e00f78c07d8bd30d9c6","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        self.assertIn(\u0027context\u0027, body)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        # NOTE(dviroel): list data model returns at least"},{"line_number":38,"context_line":"        # one element for each compute node. But we don\u0027t want to"},{"line_number":39,"context_line":"        # if there is no enabled compute nodes."},{"line_number":40,"context_line":"        if len(body[\u0027context\u0027]) \u003e 0:"},{"line_number":41,"context_line":"            context_keys \u003d body[\u0027context\u0027][0].keys()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a4a66e8_734a5d43","line":38,"range":{"start_line":38,"start_character":63,"end_line":38,"end_character":65},"updated":"2025-09-30 12:52:18.000000000","message":"nit: to fail","commit_id":"a1df4d09be9279e4fe30a0fbaf86ee0b5bdf7898"}],"watcher_tempest_plugin/tests/scenario/test_data_model.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3ca6c54edbb2034ce2e10e00f78c07d8bd30d9c6","unresolved":true,"context_lines":[{"line_number":36,"context_line":"                \"Data model tests requires at least 1 compute node, \""},{"line_number":37,"context_line":"                \"skipping tests.\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        enabled_compute_nodes \u003d cls.get_enabled_compute_nodes()"},{"line_number":40,"context_line":"        cls.wait_for_compute_node_setup()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if len(enabled_compute_nodes) \u003c 1:"},{"line_number":43,"context_line":"            raise cls.skipException("}],"source_content_type":"text/x-python","patch_set":4,"id":"7ec72858_70f15e82","line":40,"range":{"start_line":39,"start_character":7,"end_line":40,"end_character":41},"updated":"2025-09-30 12:52:18.000000000","message":"the order of this is not really correct.\n\nwe shoudl not eb getting the enabled compute nodes becfe checkign if they are registered and up\n\nbut also we should not really be checking if the hyperviors are up like this.\n\nunless we are executity whitebox test they shoudl never be down when we are running temst as the installer i.e. devstack or our downstream installer should ensure that they are up before attempeting to run tempest.\n\nso this si an expensive these that should not be required.\n\nwe should look at cleaning this pattern up in teh tempest plugin in gerneal.\n\nals resouce_setup is not the correct place to check fi the compute are enabled\n\nit woudl be if an only if it had logic to enable them which it does not.\n\nwe should be using skip_checks instead to check if they are enabled which is also where we shoudl be checkign the min compute value\n\nlike this \nhttps://opendev.org/openstack/watcher-tempest-plugin/src/commit/28716df3f7c34e484c1890d6b092559d60358264/watcher_tempest_plugin/tests/scenario/test_continuous_audit.py#L34-L46\n\n\nthis is just following the pattern in https://opendev.org/openstack/watcher-tempest-plugin/src/commit/28716df3f7c34e484c1890d6b092559d60358264/watcher_tempest_plugin/tests/scenario/test_continuous_audit.py#L48-L60 but that is not actully correct\n\n\nresouce_setup is only inteded to be used for create resouces like vms or volumes or images that are reused by the test \n\nwe shoudl not be raising skip exceptions form it in general.","commit_id":"a1df4d09be9279e4fe30a0fbaf86ee0b5bdf7898"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"658877532fdf0bd706d78bdc7410e684d180ec67","unresolved":true,"context_lines":[{"line_number":36,"context_line":"                \"Data model tests requires at least 1 compute node, \""},{"line_number":37,"context_line":"                \"skipping tests.\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        enabled_compute_nodes \u003d cls.get_enabled_compute_nodes()"},{"line_number":40,"context_line":"        cls.wait_for_compute_node_setup()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if len(enabled_compute_nodes) \u003c 1:"},{"line_number":43,"context_line":"            raise cls.skipException("}],"source_content_type":"text/x-python","patch_set":4,"id":"fc447eae_c55b2b4a","line":40,"range":{"start_line":39,"start_character":7,"end_line":40,"end_character":41},"in_reply_to":"7ec72858_70f15e82","updated":"2025-09-30 13:13:14.000000000","message":"Thanks Sean for your concerns here.\nYes, there is some refactoring happenning here [1][2], and we may rebase and fix these patterns there too.\n+1 on moving the skips to the skip_check. We need to rethink what to do with the         cls.get_enabled_compute_nodes(). IIUC the idea of this call if to save the current status of all computes nodes, and check if they are reverted at the end of the tests (since some tests enabled/disable the compute service). Checking the enabled compute nodes require some minimal credential setup, which is done after skip_checks. We could still checking if minimal resources are available (enabled) and instead of skipping, we could Fail. We could also move this check to the beggining of each test execution, instead of in the \"resource_setup\" method.\n\n[1] https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/961762\n[2] https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/960310","commit_id":"a1df4d09be9279e4fe30a0fbaf86ee0b5bdf7898"}]}
