)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"14c6279af84582f2482d3500f3dbaef5b012f279","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"181522bf_ea9de364","updated":"2025-08-22 16:30:06.000000000","message":"recheck\n\njob configuration updated in the depends-on patch","commit_id":"35d0ed663fa1aee61b1bd9c090eded20d86f9774"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b5f07f36f23121ea3e7ce28393c38345f20d396c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"56b5f7dc_43081c5c","updated":"2025-08-22 14:29:17.000000000","message":"recheck\n\ntempest recheck updated","commit_id":"35d0ed663fa1aee61b1bd9c090eded20d86f9774"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"1cd2f643d30f57cb8b2252c62728919ae4d387ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a77d7c5d_19a6fb94","updated":"2025-08-27 11:16:44.000000000","message":"recheck\n\nwatcher patche was updated yesterday","commit_id":"35d0ed663fa1aee61b1bd9c090eded20d86f9774"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"cd4b65bce587a983fbb5d4150091f92d5e617c8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"622ea00e_1033cf2c","updated":"2025-09-03 05:01:53.000000000","message":"Looks good https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_9c7/openstack/9c7b95bc3d144747ac19f9e84bba11c2/testr_results.html and https://050c14ff950a28fb762b-6e86dc8a2337ee139316a184fc899cae.ssl.cf1.rackcdn.com/openstack/ae094764362c4de2a951ba0e9cb519dd/testr_results.html API and scenario tests both passing.","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"5a07703e786d1c7993084bc73156b8e88d299670","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ea4fc6de_63add3ce","updated":"2025-09-03 05:00:52.000000000","message":"https://logserver.rdoproject.org/072/rdoproject.org/0724920e8db44d87be649ec77ef0f97f/controller/ci-framework-data/tests/test_operator/tempest-tests-tempest/stestr_results.html\n```\nDetails: {\u0027error_message\u0027: \u0027{\"code\": 406, \"title\": \"Not Acceptable\", \"description\": \"Version 1.5 was requested but the minor version is not supported by this service. The supported version range is: [1.0, 1.4].\"}\u0027}\n```\n\nNeed to merge https://review.rdoproject.org/r/c/rdoinfo/+/58136","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"47bcf9c8e6d7b8ce954cf917626e025b2b88e9fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b3512f43_0439f741","updated":"2025-09-05 09:03:06.000000000","message":"thanks Doug!","commit_id":"3eb37fa78897b0429846195d4815d0e9b79c16a4"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"43dd74248c8deb88939519f9f1e9e8f7108d7ed8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"dc01218a_47a80ba2","updated":"2025-09-04 13:03:22.000000000","message":"thanks for the changes!","commit_id":"3eb37fa78897b0429846195d4815d0e9b79c16a4"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"99adb0dec008f6f069e5c27dd8eaaca0fdc33e8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ca49acf9_a3621609","updated":"2025-09-30 08:52:05.000000000","message":"New test will run here: https://review.opendev.org/c/openstack/watcher/+/958678 (needs to be rebased).\n\nI saw one issue with the code. I might be wrong here. Please have a look, thank you!","commit_id":"c498b90d5722b6bf06344918a27ee2985095c5f1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"25517df9863379e978a2d32a33e53b1cdf1ff948","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6821d180_c1c53630","in_reply_to":"ca49acf9_a3621609","updated":"2025-09-30 12:27:19.000000000","message":"Going to rebase an run again, thanks!","commit_id":"c498b90d5722b6bf06344918a27ee2985095c5f1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"7a75fc301cdb524cdbaeb0cfdb84d4363cd12cea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2a594cbf_28d2c8ff","updated":"2025-10-09 13:37:19.000000000","message":"Test is not yet stable, requires investigation:\n- https://1fe8c776c524cc60e597-84c9f5cd8c2b87d7cd3ff61e3f0a2559.ssl.cf5.rackcdn.com/openstack/ad04f03df37a4726b4626ae880a66aa6/testr_results.html\n\ntesttools.matchers._impl.MismatchError: {\u0027hw_rng:allowed\u0027: \u0027True\u0027} !\u003d {}","commit_id":"576674148077033ff252fd24496920b4a645c7f4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1221774815abc7ad8d7e1ecba1247427576cb37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"d4c21e98_a03e2ec2","updated":"2025-10-24 14:33:28.000000000","message":"+2 so that my comment can be seen im ok with proceedeing but i think it woudl be good to refactor in a follow up.\n\nill add +w assuimg you dont want to refactor in thei change tomrrow if there are no other objections to the change.","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"fcb49cece2a5f9108d42e3b94b54401256f04a39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"e013d0dc_b0bcf79c","updated":"2025-10-24 14:53:24.000000000","message":"Thank you for the review","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"37ccec62e46468c0f56d15915954631f0a2983f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9ceec204_f531cf25","updated":"2025-10-24 14:56:24.000000000","message":"ack let move forward with this for now then and wee can loop back in a followup","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"007cefab649735a350438d0472b538410bd75df7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1334fc2a_d48015ac","updated":"2025-10-17 11:13:04.000000000","message":"https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_799/openstack/799dce40805e46609ce65ef68a6a4cff/testr_results.html\n```\nwatcher_tempest_plugin.tests.scenario.test_data_model.TestDataModelWithExtendedAttributes - passing\n```","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"a36607a65bf6c533ffec2602e4685ff27653a3ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1b8c2fd3_d20d236a","updated":"2025-10-20 17:07:33.000000000","message":"lgtm","commit_id":"07f45525dadfea897074c3490172f75f3669da90"}],"watcher_tempest_plugin/config.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"7ae552f4223826e5356ddc211672f9cbea256c70","unresolved":true,"context_lines":[{"line_number":137,"context_line":"             \"collector supported by now is the `compute` collector.\""},{"line_number":138,"context_line":"    ),"},{"line_number":139,"context_line":"    cfg.StrOpt("},{"line_number":140,"context_line":"        \"extended_attributes_nova_microversion\","},{"line_number":141,"context_line":"        default\u003dNone,"},{"line_number":142,"context_line":"        help\u003d\"Sets the maximum microversion of the Nova API to be tested \""},{"line_number":143,"context_line":"             \"in extended attributes tests. It should match the same \""}],"source_content_type":"text/x-python","patch_set":5,"id":"b1243d87_c99b1559","line":140,"updated":"2025-09-03 08:37:56.000000000","message":"I\u0027m wondering, could we use a check like https://github.com/openstack/tempest/blob/538f6af8da510e9286ddc762182cfa7170ad7b03/tempest/scenario/manager.py#L65-L67 while setting the `compute_max_microversion` to 2.96 in the new test class?","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3f9c4e47fb7b7eef49145b51f54ab575f60ea4e6","unresolved":true,"context_lines":[{"line_number":137,"context_line":"             \"collector supported by now is the `compute` collector.\""},{"line_number":138,"context_line":"    ),"},{"line_number":139,"context_line":"    cfg.StrOpt("},{"line_number":140,"context_line":"        \"extended_attributes_nova_microversion\","},{"line_number":141,"context_line":"        default\u003dNone,"},{"line_number":142,"context_line":"        help\u003d\"Sets the maximum microversion of the Nova API to be tested \""},{"line_number":143,"context_line":"             \"in extended attributes tests. It should match the same \""}],"source_content_type":"text/x-python","patch_set":5,"id":"d5606d0d_c60dc6ac","line":140,"in_reply_to":"084bf310_bdca72d8","updated":"2025-09-03 11:56:50.000000000","message":"Yeah, it is possible to improve this, and make this option works like the ``max_microversion`` but calling `nova_client_api_version`, and skipping using skip_checks","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d08f9400871bd8428457dcde1ae8875e32509d15","unresolved":true,"context_lines":[{"line_number":137,"context_line":"             \"collector supported by now is the `compute` collector.\""},{"line_number":138,"context_line":"    ),"},{"line_number":139,"context_line":"    cfg.StrOpt("},{"line_number":140,"context_line":"        \"extended_attributes_nova_microversion\","},{"line_number":141,"context_line":"        default\u003dNone,"},{"line_number":142,"context_line":"        help\u003d\"Sets the maximum microversion of the Nova API to be tested \""},{"line_number":143,"context_line":"             \"in extended attributes tests. It should match the same \""}],"source_content_type":"text/x-python","patch_set":5,"id":"084bf310_bdca72d8","line":140,"in_reply_to":"b1243d87_c99b1559","updated":"2025-09-03 11:40:45.000000000","message":"in the end they are not the same configuration. We could configure tempest to test 2.100, but watcher would be limited to another version configured in \u0027nova_client.api_version\u0027, which is at maximum 2.96. So the idea here is to replicate the same config that the admin made in watcher, not in nova. We could change the config name to be more generic.","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"43dd74248c8deb88939519f9f1e9e8f7108d7ed8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"             \"collector supported by now is the `compute` collector.\""},{"line_number":138,"context_line":"    ),"},{"line_number":139,"context_line":"    cfg.StrOpt("},{"line_number":140,"context_line":"        \"extended_attributes_nova_microversion\","},{"line_number":141,"context_line":"        default\u003dNone,"},{"line_number":142,"context_line":"        help\u003d\"Sets the maximum microversion of the Nova API to be tested \""},{"line_number":143,"context_line":"             \"in extended attributes tests. It should match the same \""}],"source_content_type":"text/x-python","patch_set":5,"id":"ea765804_3114aed1","line":140,"in_reply_to":"d5606d0d_c60dc6ac","updated":"2025-09-04 13:03:22.000000000","message":"thanks, I think this is clearer!","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aabea223bf00e0b64b6a84c8b1816599cd74d0e3","unresolved":true,"context_lines":[{"line_number":149,"context_line":"             \"to run, while others may skip a few checks based on the \""},{"line_number":150,"context_line":"             \"configured microversion. Setting this configuration to `None` \""},{"line_number":151,"context_line":"             \"may skip some tests.\""},{"line_number":152,"context_line":"    ),"},{"line_number":153,"context_line":"    cfg.BoolOpt("},{"line_number":154,"context_line":"        \"run_extended_attributes_tests\","},{"line_number":155,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"8a27d268_78b21cae","line":152,"updated":"2025-10-03 13:32:40.000000000","message":"do we need this or can we just use  min an max version already supproted by tempest.\nhttps://github.com/openstack/tempest/blob/master/tempest/config.py#L380-L397\n\nunless we really need this we should use those in out test instead and configure them in the job.","commit_id":"159a933e3303c66fd7446f9f3a985650ba763d7f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d2ef1319fceb50c524f3bd94cf980f1fa5e33ec0","unresolved":true,"context_lines":[{"line_number":149,"context_line":"             \"to run, while others may skip a few checks based on the \""},{"line_number":150,"context_line":"             \"configured microversion. Setting this configuration to `None` \""},{"line_number":151,"context_line":"             \"may skip some tests.\""},{"line_number":152,"context_line":"    ),"},{"line_number":153,"context_line":"    cfg.BoolOpt("},{"line_number":154,"context_line":"        \"run_extended_attributes_tests\","},{"line_number":155,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"24c33267_3e5036b5","line":152,"in_reply_to":"565d977d_f630b35c","updated":"2025-10-03 16:45:05.000000000","message":"I also don\u0027t really like to add this new config, since it duplicate things and is confusing. I was trying to cover this nova_client.api_version gap, to make sure that any tempest user would properly configure tempest and watcher. For now, the only test that could be affected by this are extended_attributes_tests, which are disabled by default. So based on that, we can remove this config and use the tempest one, and include this information in the \u0027run_extended_attributes_tests\u0027 description. Do we agree with that?","commit_id":"159a933e3303c66fd7446f9f3a985650ba763d7f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3c755c3f66444a78300f611c77f32297b51d9ca3","unresolved":true,"context_lines":[{"line_number":149,"context_line":"             \"to run, while others may skip a few checks based on the \""},{"line_number":150,"context_line":"             \"configured microversion. Setting this configuration to `None` \""},{"line_number":151,"context_line":"             \"may skip some tests.\""},{"line_number":152,"context_line":"    ),"},{"line_number":153,"context_line":"    cfg.BoolOpt("},{"line_number":154,"context_line":"        \"run_extended_attributes_tests\","},{"line_number":155,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"e0093731_05a95d15","line":152,"in_reply_to":"8a27d268_78b21cae","updated":"2025-10-03 14:23:46.000000000","message":"What happens is that compute max api version and watcher\u0027s config for nova max api version don\u0027t match. Watcher is limited to 2.96 and has to be configured to a value, otherwise it defaults to 2.56. If we removing this option and use the max version supported by tempest we would assume that watcher if configured properly too. Will that work?","commit_id":"159a933e3303c66fd7446f9f3a985650ba763d7f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"af195ace7d397e0964e15e7cdaa5b51f27f6eb51","unresolved":true,"context_lines":[{"line_number":149,"context_line":"             \"to run, while others may skip a few checks based on the \""},{"line_number":150,"context_line":"             \"configured microversion. Setting this configuration to `None` \""},{"line_number":151,"context_line":"             \"may skip some tests.\""},{"line_number":152,"context_line":"    ),"},{"line_number":153,"context_line":"    cfg.BoolOpt("},{"line_number":154,"context_line":"        \"run_extended_attributes_tests\","},{"line_number":155,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":8,"id":"565d977d_f630b35c","line":152,"in_reply_to":"e0093731_05a95d15","updated":"2025-10-03 14:55:29.000000000","message":"if we set max to compute.max_microversion\u003d2.96 in the job definition to reflect that that is the max version that shoudl be used by any test then it shoudl work for our usecase.\n\nonce we swap to the sdk we can go back to not seting it or usign latest ectra\n\nim baiscly saying that instead of having two diffent config option that contole the max nova api veion that will be used directly or indrectly by a tempst test we just reuse the existing nova tempest oen and we will also end up skipping the 2.96+ test for nova.\n\ntaht fine because we dont need to run the nova api or seneairo tempest test in our job and even if we did want to run them we dont really care if we are not testing version that watcher does not knwo about.\n\nso ya we would assume that watcerh is configred to the same value and if its not i would consier it to be a zuul job definition bug.\n\nwe shoudl be depercating https://docs.openstack.org/watcher/latest/configuration/watcher.html#nova_client.api_version this cycle and if we compelte hte adoption of the sdk for nova this cycle it will go away next cycle.\n\nwe currently set it to 2.96 in our jobs\nhttps://github.com/openstack/watcher/blob/master/.zuul.yaml#L215-L216\n\nbut as i mentiond befor eit is incorerct to use the same microversion to talk to all nova api so really do need to adress that this cycle.","commit_id":"159a933e3303c66fd7446f9f3a985650ba763d7f"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"007cefab649735a350438d0472b538410bd75df7","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        help\u003d\"Whether or not to run continuous audit scenario tests.\","},{"line_number":134,"context_line":"    ),"},{"line_number":135,"context_line":"    cfg.BoolOpt("},{"line_number":136,"context_line":"        \"run_extended_attributes_tests\","},{"line_number":137,"context_line":"        default\u003dFalse,"},{"line_number":138,"context_line":"        help\u003d\"Whether or not to run compute model extended attributes tests. \""},{"line_number":139,"context_line":"             \"Note that Watcher also needs to be configured to enable the \""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf518a35_cdb84796","line":136,"range":{"start_line":136,"start_character":9,"end_line":136,"end_character":38},"updated":"2025-10-17 11:13:04.000000000","message":"+1 for adding for the config option","commit_id":"07f45525dadfea897074c3490172f75f3669da90"}],"watcher_tempest_plugin/tests/scenario/base.py":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"99adb0dec008f6f069e5c27dd8eaaca0fdc33e8a","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # Check if the test class requires a specific nova client api version."},{"line_number":112,"context_line":"        if cls.watcher_nova_client_api_version:"},{"line_number":113,"context_line":"            if not api_version_utils.is_microversion_le("},{"line_number":114,"context_line":"                    cls.watcher_nova_client_api_version,"},{"line_number":115,"context_line":"                    CONF.optimize.nova_client_api_version):"},{"line_number":116,"context_line":"                msg \u003d (\"Test Class requires nova_client_api_version: %s. \""}],"source_content_type":"text/x-python","patch_set":7,"id":"4ecfb173_e8715d2c","line":113,"range":{"start_line":113,"start_character":19,"end_line":113,"end_character":56},"updated":"2025-09-30 08:52:05.000000000","message":"I checked the code for https://github.com/openstack/tempest/blob/master/tempest/lib/common/api_version_utils.py and there is no `is_microversion_le` method.\n\nI think we need to use \n```\nfrom watcher_tempest_plugin import utils\nutils.is_microversion_le\n```\nhere.","commit_id":"c498b90d5722b6bf06344918a27ee2985095c5f1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3c755c3f66444a78300f611c77f32297b51d9ca3","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # Check if the test class requires a specific nova client api version."},{"line_number":112,"context_line":"        if cls.watcher_nova_client_api_version:"},{"line_number":113,"context_line":"            if not api_version_utils.is_microversion_le("},{"line_number":114,"context_line":"                    cls.watcher_nova_client_api_version,"},{"line_number":115,"context_line":"                    CONF.optimize.nova_client_api_version):"},{"line_number":116,"context_line":"                msg \u003d (\"Test Class requires nova_client_api_version: %s. \""}],"source_content_type":"text/x-python","patch_set":7,"id":"f918d13e_6aa28d8a","line":113,"range":{"start_line":113,"start_character":19,"end_line":113,"end_character":56},"in_reply_to":"24f6b1ec_a77975bf","updated":"2025-10-03 14:23:46.000000000","message":"Done","commit_id":"c498b90d5722b6bf06344918a27ee2985095c5f1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"25517df9863379e978a2d32a33e53b1cdf1ff948","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # Check if the test class requires a specific nova client api version."},{"line_number":112,"context_line":"        if cls.watcher_nova_client_api_version:"},{"line_number":113,"context_line":"            if not api_version_utils.is_microversion_le("},{"line_number":114,"context_line":"                    cls.watcher_nova_client_api_version,"},{"line_number":115,"context_line":"                    CONF.optimize.nova_client_api_version):"},{"line_number":116,"context_line":"                msg \u003d (\"Test Class requires nova_client_api_version: %s. \""}],"source_content_type":"text/x-python","patch_set":7,"id":"24f6b1ec_a77975bf","line":113,"range":{"start_line":113,"start_character":19,"end_line":113,"end_character":56},"in_reply_to":"4ecfb173_e8715d2c","updated":"2025-09-30 12:27:19.000000000","message":"good catch Chandan, proposing the fix now. Thanks","commit_id":"c498b90d5722b6bf06344918a27ee2985095c5f1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1221774815abc7ad8d7e1ecba1247427576cb37","unresolved":true,"context_lines":[{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"        # Check all instances are in the model list built."},{"line_number":1165,"context_line":"        while (not set(instance_ids) \u003c\u003d set(model_ids) or not model_ids):"},{"line_number":1166,"context_line":"            time.sleep(15)"},{"line_number":1167,"context_line":"            if time.time() \u003e\u003d timeout_end:"},{"line_number":1168,"context_line":"                raise Exception(\"Attributes were not updated in the model.\")"},{"line_number":1169,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3ced65f9_7d764c47","line":1166,"updated":"2025-10-24 14:33:28.000000000","message":"nit i guess this is ok bu tthe timeout and the interval for test like this soudl ideally com form config option not hardcoded values\n\nwe can start with this but i suspect we will need to change this in the future.\n\nif we do we should make it a config option.","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"fcb49cece2a5f9108d42e3b94b54401256f04a39","unresolved":true,"context_lines":[{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"        # Check all instances are in the model list built."},{"line_number":1165,"context_line":"        while (not set(instance_ids) \u003c\u003d set(model_ids) or not model_ids):"},{"line_number":1166,"context_line":"            time.sleep(15)"},{"line_number":1167,"context_line":"            if time.time() \u003e\u003d timeout_end:"},{"line_number":1168,"context_line":"                raise Exception(\"Attributes were not updated in the model.\")"},{"line_number":1169,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"323f7cb1_f2e60204","line":1166,"in_reply_to":"3ced65f9_7d764c47","updated":"2025-10-24 14:53:24.000000000","message":"this one and the existing on in check for updates in compute model are hardcode yes, and we can add a config option to them. I can add in a follow up. It should be more clear and aligned with the collector\u0027s period. Thanks!","commit_id":"07f45525dadfea897074c3490172f75f3669da90"}],"watcher_tempest_plugin/tests/scenario/test_data_model.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"7ae552f4223826e5356ddc211672f9cbea256c70","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            server_ctx[\u0027server_flavor_extra_specs\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        if (utils.is_microversion_le("},{"line_number":171,"context_line":"                \"2.96\", CONF.optimize.extended_attributes_nova_microversion)"},{"line_number":172,"context_line":"                and CONF.optimize.data_model_collectors_period):"},{"line_number":173,"context_line":"            # check server pinned az"},{"line_number":174,"context_line":"            self.assertEqual(compute_node[\u0027zone\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"96648135_fd1928a6","line":171,"updated":"2025-09-03 08:37:56.000000000","message":"we should move the `2.96` to a var like https://github.com/openstack/watcher-tempest-plugin/blob/505bbdbc86690f89ed421288ef4bf5762004a305/watcher_tempest_plugin/tests/scenario/base.py#L55 so it would have a meaningful name, for future reference","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"43dd74248c8deb88939519f9f1e9e8f7108d7ed8","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            server_ctx[\u0027server_flavor_extra_specs\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        if (utils.is_microversion_le("},{"line_number":171,"context_line":"                \"2.96\", CONF.optimize.extended_attributes_nova_microversion)"},{"line_number":172,"context_line":"                and CONF.optimize.data_model_collectors_period):"},{"line_number":173,"context_line":"            # check server pinned az"},{"line_number":174,"context_line":"            self.assertEqual(compute_node[\u0027zone\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"4fe5badd_825ac4f8","line":171,"in_reply_to":"3dfcfb5d_d825640f","updated":"2025-09-04 13:03:22.000000000","message":"Done","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d08f9400871bd8428457dcde1ae8875e32509d15","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            server_ctx[\u0027server_flavor_extra_specs\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        if (utils.is_microversion_le("},{"line_number":171,"context_line":"                \"2.96\", CONF.optimize.extended_attributes_nova_microversion)"},{"line_number":172,"context_line":"                and CONF.optimize.data_model_collectors_period):"},{"line_number":173,"context_line":"            # check server pinned az"},{"line_number":174,"context_line":"            self.assertEqual(compute_node[\u0027zone\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"3dfcfb5d_d825640f","line":171,"in_reply_to":"96648135_fd1928a6","updated":"2025-09-03 11:40:45.000000000","message":"Yeah, that make sense, I will provide an update, thanks!","commit_id":"3b501ffe3c4c836b8a93cdcb5c6ad1db7c7b8d70"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"78036367d22661ecb560514ab589ea9ca57f5d65","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    @classmethod"},{"line_number":108,"context_line":"    def skip_checks(cls):"},{"line_number":109,"context_line":"        super(TestDataModelWithExtendedAttributes, cls).skip_checks()"},{"line_number":110,"context_line":"        if not CONF.optimize.run_extended_attributes_tests:"},{"line_number":111,"context_line":"            raise cls.skipException("},{"line_number":112,"context_line":"                \"Extended attributes for compute model tests \""},{"line_number":113,"context_line":"                \"are not enabled.\")"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    # Minimal version required for extended attributes"},{"line_number":116,"context_line":"    min_microversion \u003d \"1.6\""}],"source_content_type":"text/x-python","patch_set":8,"id":"830d4bc6_c0c03e73","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":35},"updated":"2025-10-01 09:45:51.000000000","message":"would it be possible to automatically skip this tests based on the nova microversion available in the cluster instead (or in addition to) a congurable parameter?","commit_id":"159a933e3303c66fd7446f9f3a985650ba763d7f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"33078b7693bd8795df4fd355001c66ece1aae6a0","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    @classmethod"},{"line_number":108,"context_line":"    def skip_checks(cls):"},{"line_number":109,"context_line":"        super(TestDataModelWithExtendedAttributes, cls).skip_checks()"},{"line_number":110,"context_line":"        if not CONF.optimize.run_extended_attributes_tests:"},{"line_number":111,"context_line":"            raise cls.skipException("},{"line_number":112,"context_line":"                \"Extended attributes for compute model tests \""},{"line_number":113,"context_line":"                \"are not enabled.\")"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    # Minimal version required for extended attributes"},{"line_number":116,"context_line":"    min_microversion \u003d \"1.6\""}],"source_content_type":"text/x-python","patch_set":8,"id":"f92bd690_e21c0e76","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":35},"in_reply_to":"830d4bc6_c0c03e73","updated":"2025-10-01 13:01:24.000000000","message":"We can´t. Extended attributes may depend on newer versions of nova api to collect pinned_az, but not flavor extra_specs. Watcher also supports a configuration to disable extended attributes collection, which is not related to nova max api configuration. Ideally we should not mix both things. But it is a good question, thanks!","commit_id":"159a933e3303c66fd7446f9f3a985650ba763d7f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f1221774815abc7ad8d7e1ecba1247427576cb37","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        new_fields \u003d set([\u0027server_pinned_az\u0027, \u0027server_flavor_extra_specs\u0027])"},{"line_number":147,"context_line":"        self.assertTrue(new_fields.issubset(set(context_keys)))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if (utils.is_microversion_le("},{"line_number":150,"context_line":"                base.NOVA_API_VERSION_SERVER_PINNED_AZ,"},{"line_number":151,"context_line":"                CONF.compute.max_microversion)):"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            # Wait until we get server_pinned_az updated in model"},{"line_number":154,"context_line":"            # server_pinned_az can only be updated via collector"},{"line_number":155,"context_line":"            self.wait_for_instances_attributes_in_model("},{"line_number":156,"context_line":"                [instance], {\u0027server_pinned_az\u0027: compute_node[\u0027zone\u0027]})"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        else:"},{"line_number":159,"context_line":"            LOG.warning(\"Server pinned AZ validation was skipped because \""},{"line_number":160,"context_line":"                        \"the configured compute microversion does not \""}],"source_content_type":"text/x-python","patch_set":15,"id":"d6925b71_9b4b2673","line":157,"range":{"start_line":149,"start_character":8,"end_line":157,"end_character":1},"updated":"2025-10-24 14:33:28.000000000","message":"ack\n\nits valid to make some aspect fo a test condtion based on the configured version but i woudl normally say a better approch is to split this into multipel tests and have the ones that need the newer microversion skip\n\nso in this case you might have the calss setup function create the vm and then have multiple seperate tests per nova microverson asseurt the presence of the diffetn fileds.\n\nthat way you can see at a galnce in the test report which filed have been asserted.\n\nthis wardign will be much harder to see so this is not really the correct pattern to follow.","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"36ab3aff4b948727d6ecc245bb6febaac8fa6139","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        new_fields \u003d set([\u0027server_pinned_az\u0027, \u0027server_flavor_extra_specs\u0027])"},{"line_number":147,"context_line":"        self.assertTrue(new_fields.issubset(set(context_keys)))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if (utils.is_microversion_le("},{"line_number":150,"context_line":"                base.NOVA_API_VERSION_SERVER_PINNED_AZ,"},{"line_number":151,"context_line":"                CONF.compute.max_microversion)):"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            # Wait until we get server_pinned_az updated in model"},{"line_number":154,"context_line":"            # server_pinned_az can only be updated via collector"},{"line_number":155,"context_line":"            self.wait_for_instances_attributes_in_model("},{"line_number":156,"context_line":"                [instance], {\u0027server_pinned_az\u0027: compute_node[\u0027zone\u0027]})"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        else:"},{"line_number":159,"context_line":"            LOG.warning(\"Server pinned AZ validation was skipped because \""},{"line_number":160,"context_line":"                        \"the configured compute microversion does not \""}],"source_content_type":"text/x-python","patch_set":15,"id":"43a5fbc7_8ffc19a1","line":157,"range":{"start_line":149,"start_character":8,"end_line":157,"end_character":1},"in_reply_to":"bea5432a_5b3a1935","updated":"2025-10-24 14:58:29.000000000","message":"ya my preference woudl be 1 instnace with several tests that share it for the scaling reason with new atibute but ultimately im ok with either approch.\n\nwe shoudl really be validating this in the watch unit and ro future functional tests as well but thats a separate matter.","commit_id":"07f45525dadfea897074c3490172f75f3669da90"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"fcb49cece2a5f9108d42e3b94b54401256f04a39","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        new_fields \u003d set([\u0027server_pinned_az\u0027, \u0027server_flavor_extra_specs\u0027])"},{"line_number":147,"context_line":"        self.assertTrue(new_fields.issubset(set(context_keys)))"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if (utils.is_microversion_le("},{"line_number":150,"context_line":"                base.NOVA_API_VERSION_SERVER_PINNED_AZ,"},{"line_number":151,"context_line":"                CONF.compute.max_microversion)):"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            # Wait until we get server_pinned_az updated in model"},{"line_number":154,"context_line":"            # server_pinned_az can only be updated via collector"},{"line_number":155,"context_line":"            self.wait_for_instances_attributes_in_model("},{"line_number":156,"context_line":"                [instance], {\u0027server_pinned_az\u0027: compute_node[\u0027zone\u0027]})"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        else:"},{"line_number":159,"context_line":"            LOG.warning(\"Server pinned AZ validation was skipped because \""},{"line_number":160,"context_line":"                        \"the configured compute microversion does not \""}],"source_content_type":"text/x-python","patch_set":15,"id":"bea5432a_5b3a1935","line":157,"range":{"start_line":149,"start_character":8,"end_line":157,"end_character":1},"in_reply_to":"d6925b71_9b4b2673","updated":"2025-10-24 14:53:24.000000000","message":"hum, yes, in this way we can only see that server_pinned_az was not tested in the logs. So we can refactor to have 2 tests using a common instance created in class level. Or 2 tests where each one create a new instance. The later approach will increase the execution time for every new attribute added in the future too. The class level one may be the more suitable in this case.\nI think that we can refactor in a follow up, to reduce the amount of code to review.","commit_id":"07f45525dadfea897074c3490172f75f3669da90"}],"watcher_tempest_plugin/utils.py":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"007cefab649735a350438d0472b538410bd75df7","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def is_microversion_le(left, right):"},{"line_number":20,"context_line":"    \"\"\"Check if the left microversion is less or equal then the right one.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    left_microversion \u003d api_version_request.APIVersionRequest(left)"},{"line_number":23,"context_line":"    right_microversion \u003d api_version_request.APIVersionRequest(right)"}],"source_content_type":"text/x-python","patch_set":15,"id":"40ca695d_a576127e","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":73},"updated":"2025-10-17 11:13:04.000000000","message":"```suggestion\n    \"\"\"Check if the left microversion is less than or equal to the right one.\"\"\"\n```","commit_id":"07f45525dadfea897074c3490172f75f3669da90"}]}
