)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e535f65aed979f0b062540811834788345818cec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fb14d5bd_74dd9097","updated":"2024-12-11 23:13:33.000000000","message":"from logs: \u003e 2024-12-09 05:24:37.891216 | controller | {0} setUpClass (ironic_tempest_plugin.tests.api.admin.test_microversion_enforcement.TestMicroversionEnforcement) ... SKIPPED: The microversion range[latest - latest] of this test is out of the configuration range[1.1 - 1.95].\n\nPlease make sure these tests are actually running :D","commit_id":"5ab735c610b244089a74063a4d652ac5fecdf424"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"4cedcd4137579693d43c531d0fc3e4161f475d82","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9ab6c63a_a72441bb","updated":"2024-12-09 05:08:24.000000000","message":"recheck - Error: Unexpected error when processing next deploy step","commit_id":"5ab735c610b244089a74063a4d652ac5fecdf424"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"1d4f14f953baef0cea531a7e099a31682f36a2f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"939336a3_d9e18710","in_reply_to":"fb14d5bd_74dd9097","updated":"2024-12-18 23:37:45.000000000","message":"Done","commit_id":"5ab735c610b244089a74063a4d652ac5fecdf424"}],"ironic_tempest_plugin/tests/api/admin/test_microversion_enforcement.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"affcb2ef2525f4f3327b0a48e8ed923034f9bcac","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    # NOTE(adamcarthur) Ensures teardown/setup works"},{"line_number":28,"context_line":"    # with a guaranteed supported microversion."},{"line_number":29,"context_line":"    # Must be manually set to a universally supported microversion."},{"line_number":30,"context_line":"    min_microversion \u003d \"1.92\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(TestMicroversionEnforcement, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"d091c927_19d52d4a","line":30,"updated":"2025-01-10 20:45:17.000000000","message":"This indicates the minimum microversion *this testing class* supports; not the minimum microversion of the endpoint this testing class is working against.\n\nSo by seting the min_microversion to 1.92, we ensure that e.g. test_create_allocations() would never run on ANYTHING that was old enough to not have a 1.92 microversion ... which makes the negative testing slightly less valuable.\n\nThis means that the best action is likely:\n- Ensure tests for each endpoint are split up into separate classes\n- Those classes should have min_microversion set to the first microversion that introduced the feature\n\nThis will ensure we run positive and negative tests in any Ironic version which would need them run.","commit_id":"55ab5c3391c342f159292755982d079f55c8aa8e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"2e4010712d058a201c27019711ca9525a4e15592","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # NOTE(adamcarthur) Ensures teardown/setup works"},{"line_number":28,"context_line":"    # with a guaranteed supported microversion."},{"line_number":29,"context_line":"    # Must be manually set to a universally supported microversion."},{"line_number":30,"context_line":"    min_microversion \u003d \"1.92\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(TestMicroversionEnforcement, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"73cddfaa_45743987","line":30,"in_reply_to":"61c77348_37bb1d7f","updated":"2025-01-31 02:25:15.000000000","message":"Done","commit_id":"55ab5c3391c342f159292755982d079f55c8aa8e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"3f48bada3e35551f02d5e03338f488ca7b0d1649","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    # NOTE(adamcarthur) Ensures teardown/setup works"},{"line_number":28,"context_line":"    # with a guaranteed supported microversion."},{"line_number":29,"context_line":"    # Must be manually set to a universally supported microversion."},{"line_number":30,"context_line":"    min_microversion \u003d \"1.92\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(TestMicroversionEnforcement, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"de8304f0_dbd8b094","line":30,"in_reply_to":"d091c927_19d52d4a","updated":"2025-01-24 23:36:19.000000000","message":"Is this true?\n\nWhat I cannot wrap my head around is that I use the api_microversion_fixture to change the microversion to the one I want it right before I do the version check I care about.\n\nOtherwise, I want to use the latest so I get the setup/teardown behaviour I want. Otherwise, what you are describing sounds more like a functional test, which I am not against adding as well.","commit_id":"55ab5c3391c342f159292755982d079f55c8aa8e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"b1891d4ae7d939edd68a9a5d75144ce58033f314","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    # NOTE(adamcarthur) Ensures teardown/setup works"},{"line_number":28,"context_line":"    # with a guaranteed supported microversion."},{"line_number":29,"context_line":"    # Must be manually set to a universally supported microversion."},{"line_number":30,"context_line":"    min_microversion \u003d \"1.92\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(TestMicroversionEnforcement, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"61c77348_37bb1d7f","line":30,"in_reply_to":"de8304f0_dbd8b094","updated":"2025-01-30 02:24:02.000000000","message":"Now that I think about it, it basically depends what pattern is preferred:\n- Lots of fixtures to change the version where required (And set the min_microversion here super low)?\n- Separate classes for each \"chunk\" that shares a base microversion.\n\nI see how the latter is easier, I think I am just anti-classes a lot of the time, but I understand that the Openstack Codebase is not 😊","commit_id":"55ab5c3391c342f159292755982d079f55c8aa8e"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0028d22f71303541a9b2b4ca5815965e61868b9f","unresolved":true,"context_lines":[{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u00278f527b3d-d5f1-4859-920f-8022b5d13621\u0027)"},{"line_number":95,"context_line":"    def test_create_allocations(self):"},{"line_number":96,"context_line":"        self._microversion_test("},{"line_number":97,"context_line":"            BaremetalClient.create_allocation, \"1.52\","},{"line_number":98,"context_line":"            lib_exc.UnexpectedResponseCode, {"}],"source_content_type":"text/x-python","patch_set":7,"id":"afbaa884_6103d8a3","line":95,"updated":"2025-01-10 20:49:35.000000000","message":"The reason you need to split classes is to ensure that these tests will run on an Ironic version that contains allocations but not shards (for instance).","commit_id":"55ab5c3391c342f159292755982d079f55c8aa8e"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"b1891d4ae7d939edd68a9a5d75144ce58033f314","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u00278f527b3d-d5f1-4859-920f-8022b5d13621\u0027)"},{"line_number":95,"context_line":"    def test_create_allocations(self):"},{"line_number":96,"context_line":"        self._microversion_test("},{"line_number":97,"context_line":"            BaremetalClient.create_allocation, \"1.52\","},{"line_number":98,"context_line":"            lib_exc.UnexpectedResponseCode, {"}],"source_content_type":"text/x-python","patch_set":7,"id":"32644791_d76614c0","line":95,"in_reply_to":"afbaa884_6103d8a3","updated":"2025-01-30 02:24:02.000000000","message":"Done","commit_id":"55ab5c3391c342f159292755982d079f55c8aa8e"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ee1a25016dec6dad0179cb5f5d4cd1146263920e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from oslo_utils import uuidutils"},{"line_number":2,"context_line":"from tempest.lib import decorators"},{"line_number":3,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"e36afbeb_425a5723","line":1,"in_reply_to":"41e43b6f_63910abd","updated":"2025-01-30 20:36:23.000000000","message":"\u003e pep8: H102: Apache 2.0 license header not found\n\nPlease fix.","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"2e4010712d058a201c27019711ca9525a4e15592","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from oslo_utils import uuidutils"},{"line_number":2,"context_line":"from tempest.lib import decorators"},{"line_number":3,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1f9f0667_df7854a7","line":1,"in_reply_to":"e36afbeb_425a5723","updated":"2025-01-31 02:25:15.000000000","message":"Done","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"2e4010712d058a201c27019711ca9525a4e15592","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.resource_class \u003d uuidutils.generate_uuid()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class TestShardMicroversions(BaseTestMicroversionEnforcement, MicroversionTestMixin):"},{"line_number":64,"context_line":"    \"\"\"Tests for shard-related API microversion enforcement.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    min_microversion \u003d \"1.82\""}],"source_content_type":"text/x-python","patch_set":8,"id":"e942e055_a862a5c1","line":63,"in_reply_to":"1b4855b2_b8adc163","updated":"2025-01-31 02:25:15.000000000","message":"Done","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ee1a25016dec6dad0179cb5f5d4cd1146263920e","unresolved":true,"context_lines":[{"line_number":60,"context_line":"        self.resource_class \u003d uuidutils.generate_uuid()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class TestShardMicroversions(BaseTestMicroversionEnforcement, MicroversionTestMixin):"},{"line_number":64,"context_line":"    \"\"\"Tests for shard-related API microversion enforcement.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    min_microversion \u003d \"1.82\""}],"source_content_type":"text/x-python","patch_set":8,"id":"1b4855b2_b8adc163","line":63,"in_reply_to":"44b2b2de_2f1337df","updated":"2025-01-30 20:36:23.000000000","message":"\u003e pep8: E501 line too long (85 \u003e 79 characters)\n\nPlease fix.","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ee1a25016dec6dad0179cb5f5d4cd1146263920e","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        )"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class TestAllocationMicroversions(BaseTestMicroversionEnforcement, MicroversionTestMixin):"},{"line_number":83,"context_line":"    \"\"\"Tests for allocation-related API microversion enforcement.\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    min_microversion \u003d \"1.52\""}],"source_content_type":"text/x-python","patch_set":8,"id":"8d84209f_af7aab89","line":82,"in_reply_to":"4f437354_d09f2c28","updated":"2025-01-30 20:36:23.000000000","message":"\u003e pep8: E501 line too long (90 \u003e 79 characters)\n\nPlease fix.","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"2e4010712d058a201c27019711ca9525a4e15592","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        )"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class TestAllocationMicroversions(BaseTestMicroversionEnforcement, MicroversionTestMixin):"},{"line_number":83,"context_line":"    \"\"\"Tests for allocation-related API microversion enforcement.\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    min_microversion \u003d \"1.52\""}],"source_content_type":"text/x-python","patch_set":8,"id":"662b3054_9110a0f4","line":82,"in_reply_to":"8d84209f_af7aab89","updated":"2025-01-31 02:25:15.000000000","message":"Done","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"2e4010712d058a201c27019711ca9525a4e15592","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            lib_exc.UnexpectedResponseCode, {"},{"line_number":121,"context_line":"                \"allocation_ident\": allocation[\u0027uuid\u0027]"},{"line_number":122,"context_line":"            }"},{"line_number":123,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fb19f87_5eb6eb3c","line":123,"in_reply_to":"6f9f33c1_57a9154c","updated":"2025-01-31 02:25:15.000000000","message":"Done","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ee1a25016dec6dad0179cb5f5d4cd1146263920e","unresolved":true,"context_lines":[{"line_number":120,"context_line":"            lib_exc.UnexpectedResponseCode, {"},{"line_number":121,"context_line":"                \"allocation_ident\": allocation[\u0027uuid\u0027]"},{"line_number":122,"context_line":"            }"},{"line_number":123,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":8,"id":"6f9f33c1_57a9154c","line":123,"in_reply_to":"c925f7c1_921cf9d4","updated":"2025-01-30 20:36:23.000000000","message":"\u003e pep8: W292 no newline at end of file\n\nPlease fix.","commit_id":"acb948e9da8dd9123ffdae77c6fbb5a2432e11f2"}]}
