)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd37c029254edaa5a394394cc73637b53d4f0c19","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"trivial: Fix outstanding flake8 issues"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix violations of E501, E713, E721, E741, F601 and F811. These are"},{"line_number":10,"context_line":"picked up by ruff-check but not by flake8 itself."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ia2510daadc15a9bb260346caf426e5ef5ea5f9c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"a7bd50e0_490e3733","line":9,"updated":"2026-10-12 11:56:12.000000000","message":"it would have been nice to say what those are","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e65551a9fc2632b2266ea19a9a2486ac04360380","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"trivial: Fix outstanding flake8 issues"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fix violations of E501, E713, E721, E741, F601 and F811. These are"},{"line_number":10,"context_line":"picked up by ruff-check but not by flake8 itself."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ia2510daadc15a9bb260346caf426e5ef5ea5f9c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"a8da75fc_560863de","line":9,"in_reply_to":"a7bd50e0_490e3733","updated":"2026-10-12 12:49:28.000000000","message":"Done","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"08b6fa52a8798fa28960f915a09e02573708463f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"50570560_2bb8ce75","updated":"2026-10-19 16:32:15.000000000","message":"Looks good to me","commit_id":"c5174d726385c242e731e1caaf4e22b23b252f37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"19df3125a72c8f08679888d8fce57ed72e5c2a74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"af9aefe9_5395181d","updated":"2026-10-13 14:23:55.000000000","message":"wondering if we could enable these tests earlier but it might not worth doing if we get ruff-check soon.","commit_id":"c5174d726385c242e731e1caaf4e22b23b252f37"}],"nova/api/validation/extra_specs/base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd37c029254edaa5a394394cc73637b53d4f0c19","unresolved":true,"context_lines":[{"line_number":54,"context_line":"            )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        value_regex \u003d None"},{"line_number":57,"context_line":"        if self.value[\u0027type\u0027] is str and self.value.get(\u0027pattern\u0027):"},{"line_number":58,"context_line":"            value_regex \u003d self.value[\u0027pattern\u0027]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.value_regex \u003d value_regex"}],"source_content_type":"text/x-python","patch_set":5,"id":"546e02f7_e396ccca","line":57,"updated":"2026-10-12 11:56:12.000000000","message":"ok yes we shoudl be using identity when comparing types not equlatiy","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f5b81c1008bf830c0ec98b0eb012d388538c944e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        value_regex \u003d None"},{"line_number":57,"context_line":"        if self.value[\u0027type\u0027] is str and self.value.get(\u0027pattern\u0027):"},{"line_number":58,"context_line":"            value_regex \u003d self.value[\u0027pattern\u0027]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.value_regex \u003d value_regex"}],"source_content_type":"text/x-python","patch_set":5,"id":"28ff9d2f_59bf77b2","line":57,"in_reply_to":"546e02f7_e396ccca","updated":"2026-10-12 12:49:20.000000000","message":"Acknowledged","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"}],"nova/objects/request_spec.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd37c029254edaa5a394394cc73637b53d4f0c19","unresolved":true,"context_lines":[{"line_number":1227,"context_line":"        # NOTE(sbauza): We are not persisting the user context since it\u0027s only"},{"line_number":1228,"context_line":"        # needed for hydrating the Retry object"},{"line_number":1229,"context_line":"        retry_obj \u003d cls()"},{"line_number":1230,"context_line":"        if \u0027num_attempts\u0027 not in retry_dict or \u0027hosts\u0027 not in retry_dict:"},{"line_number":1231,"context_line":"            # NOTE(sbauza): We prefer to return an empty object if the"},{"line_number":1232,"context_line":"            # primitive is not good enough"},{"line_number":1233,"context_line":"            return retry_obj"}],"source_content_type":"text/x-python","patch_set":5,"id":"4a97e74f_a0118a61","line":1230,"updated":"2026-10-12 11:56:12.000000000","message":"this changes the meaing of this chack but i also think this is what was orginally intended\n\n\nor something like this\n\n```\n        if any(key not in retry_dict for key in (\u0027num_attempts\u0027, \u0027hosts\u0027)):\n```\n\nthe orgially code had a bug as it basiclly just checked if \"hosts\" was in retry_dict\n\nwhat you have written is clearer for 2 tiems but if we had 3 or more the any solution is better.\n\nthis was a long standign bug and probaly shoudl have a unit test for the behvior.","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f5b81c1008bf830c0ec98b0eb012d388538c944e","unresolved":false,"context_lines":[{"line_number":1227,"context_line":"        # NOTE(sbauza): We are not persisting the user context since it\u0027s only"},{"line_number":1228,"context_line":"        # needed for hydrating the Retry object"},{"line_number":1229,"context_line":"        retry_obj \u003d cls()"},{"line_number":1230,"context_line":"        if \u0027num_attempts\u0027 not in retry_dict or \u0027hosts\u0027 not in retry_dict:"},{"line_number":1231,"context_line":"            # NOTE(sbauza): We prefer to return an empty object if the"},{"line_number":1232,"context_line":"            # primitive is not good enough"},{"line_number":1233,"context_line":"            return retry_obj"}],"source_content_type":"text/x-python","patch_set":5,"id":"2661c58f_5404698f","line":1230,"in_reply_to":"4a97e74f_a0118a61","updated":"2026-10-12 12:49:20.000000000","message":"\u003e this was a long standign bug and probaly shoudl have a unit test for the behvior.\n\nGood point. Added in `nova/tests/unit/objects/test_request_spec.py`.","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"08b6fa52a8798fa28960f915a09e02573708463f","unresolved":false,"context_lines":[{"line_number":1227,"context_line":"        # NOTE(sbauza): We are not persisting the user context since it\u0027s only"},{"line_number":1228,"context_line":"        # needed for hydrating the Retry object"},{"line_number":1229,"context_line":"        retry_obj \u003d cls()"},{"line_number":1230,"context_line":"        if \u0027num_attempts\u0027 not in retry_dict or \u0027hosts\u0027 not in retry_dict:"},{"line_number":1231,"context_line":"            # NOTE(sbauza): We prefer to return an empty object if the"},{"line_number":1232,"context_line":"            # primitive is not good enough"},{"line_number":1233,"context_line":"            return retry_obj"}],"source_content_type":"text/x-python","patch_set":7,"id":"83133f1d_4bf5a414","line":1230,"updated":"2026-10-19 16:32:15.000000000","message":"This was a good catch of a bug.","commit_id":"c5174d726385c242e731e1caaf4e22b23b252f37"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd37c029254edaa5a394394cc73637b53d4f0c19","unresolved":true,"context_lines":[{"line_number":9992,"context_line":"        with self.compute._build_resources(*args) as resources:"},{"line_number":9993,"context_line":"            pass"},{"line_number":9994,"context_line":""},{"line_number":9995,"context_line":"        mock_build_net.assert_called_once_with(self.context, self.instance,"},{"line_number":9996,"context_line":"            requested_networks, mock.ANY,"},{"line_number":9997,"context_line":"            mock.ANY, network_arqs)"},{"line_number":9998,"context_line":"        return resources"},{"line_number":9999,"context_line":""},{"line_number":10000,"context_line":"    @mock.patch.object(virt_driver.ComputeDriver,"},{"line_number":10001,"context_line":"                       \u0027prepare_for_spawn\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f8c70bd4_e756ef57","line":9998,"range":{"start_line":9995,"start_character":7,"end_line":9998,"end_character":24},"updated":"2026-10-12 11:56:12.000000000","message":"for reaablity we really shoud indent this inside the context manger\n\nyes context manager dont create scoep so they leak there as names into the srounding scope but most people dont know that and its really not a patter we shoudl encourage.\n\nif the context mangeer also had sideefect like holidng a lock on the resource or a db transaction accesign the resources outside of it may be unsafe.\n\ni literally fixed a security bug in keystone in hibiscuss that came form this exact pattern where the context manager was retruing a query object that was not executed until after the conext manger as exited which ment keystone was leaking db connection and everutally ran out.\n\nthis is in test code but if your fixign the preitalistion to [] you proably shoudl also fix this.","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f5b81c1008bf830c0ec98b0eb012d388538c944e","unresolved":false,"context_lines":[{"line_number":9992,"context_line":"        with self.compute._build_resources(*args) as resources:"},{"line_number":9993,"context_line":"            pass"},{"line_number":9994,"context_line":""},{"line_number":9995,"context_line":"        mock_build_net.assert_called_once_with(self.context, self.instance,"},{"line_number":9996,"context_line":"            requested_networks, mock.ANY,"},{"line_number":9997,"context_line":"            mock.ANY, network_arqs)"},{"line_number":9998,"context_line":"        return resources"},{"line_number":9999,"context_line":""},{"line_number":10000,"context_line":"    @mock.patch.object(virt_driver.ComputeDriver,"},{"line_number":10001,"context_line":"                       \u0027prepare_for_spawn\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"49ee6e29_4c40cd79","line":9998,"range":{"start_line":9995,"start_character":7,"end_line":9998,"end_character":24},"in_reply_to":"f8c70bd4_e756ef57","updated":"2026-10-12 12:49:20.000000000","message":"Done","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"}],"nova/tests/unit/fake_ldap.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd37c029254edaa5a394394cc73637b53d4f0c19","unresolved":true,"context_lines":[{"line_number":119,"context_line":"    \"\"\""},{"line_number":120,"context_line":"    # cut off the parentheses"},{"line_number":121,"context_line":"    inner \u003d query[1:-1]"},{"line_number":122,"context_line":"    if inner.startswith(\u0027\u0026\u0027):"},{"line_number":123,"context_line":"        # cut off the \u0026"},{"line_number":124,"context_line":"        x, y \u003d _paren_groups(inner[1:])"},{"line_number":125,"context_line":"        return _match_query(x, attrs) and _match_query(y, attrs)"},{"line_number":126,"context_line":"    if inner.startswith(\u0027|\u0027):"},{"line_number":127,"context_line":"        # cut off the |"},{"line_number":128,"context_line":"        x, y \u003d _paren_groups(inner[1:])"},{"line_number":129,"context_line":"        return _match_query(x, attrs) or _match_query(y, attrs)"},{"line_number":130,"context_line":"    if inner.startswith(\u0027!\u0027):"},{"line_number":131,"context_line":"        # cut off the ! and the nested parentheses"},{"line_number":132,"context_line":"        return not _match_query(query[2:-1], attrs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"91c2a4cb_db643aba","line":129,"range":{"start_line":122,"start_character":0,"end_line":129,"end_character":63},"updated":"2026-10-12 11:56:12.000000000","message":"this is noncense however\n\nl,r standar of r left and right\n\nchangign it to x/y does nothign for understandablity.\n\nif you want to side stepp the short varibel check make it left and right","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f5b81c1008bf830c0ec98b0eb012d388538c944e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    \"\"\""},{"line_number":120,"context_line":"    # cut off the parentheses"},{"line_number":121,"context_line":"    inner \u003d query[1:-1]"},{"line_number":122,"context_line":"    if inner.startswith(\u0027\u0026\u0027):"},{"line_number":123,"context_line":"        # cut off the \u0026"},{"line_number":124,"context_line":"        x, y \u003d _paren_groups(inner[1:])"},{"line_number":125,"context_line":"        return _match_query(x, attrs) and _match_query(y, attrs)"},{"line_number":126,"context_line":"    if inner.startswith(\u0027|\u0027):"},{"line_number":127,"context_line":"        # cut off the |"},{"line_number":128,"context_line":"        x, y \u003d _paren_groups(inner[1:])"},{"line_number":129,"context_line":"        return _match_query(x, attrs) or _match_query(y, attrs)"},{"line_number":130,"context_line":"    if inner.startswith(\u0027!\u0027):"},{"line_number":131,"context_line":"        # cut off the ! and the nested parentheses"},{"line_number":132,"context_line":"        return not _match_query(query[2:-1], attrs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d599630_cef6d32e","line":129,"range":{"start_line":122,"start_character":0,"end_line":129,"end_character":63},"in_reply_to":"91c2a4cb_db643aba","updated":"2026-10-12 12:49:20.000000000","message":"Done","commit_id":"cdc736e58f1adbd3a590783a87c007c7b7d0b10e"}],"nova/tests/unit/objects/test_request_spec.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e0b24b23abbf17159b4cf15bb735d8789adf0366","unresolved":true,"context_lines":[{"line_number":1558,"context_line":"            )"},{"line_number":1559,"context_line":"            # both fields should be present"},{"line_number":1560,"context_line":"            self.assertIn(\u0027num_attempts\u0027, obj)"},{"line_number":1561,"context_line":"            self.assertIn(\u0027hosts\u0027, obj)"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"class TestMappingRequestGroupsToProviders(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"198ebf28_c524b479","line":1561,"updated":"2026-10-12 12:53:50.000000000","message":"+1","commit_id":"c5174d726385c242e731e1caaf4e22b23b252f37"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0edb8da90b96b8192c5f2e7ae688d89e94b158ce","unresolved":false,"context_lines":[{"line_number":1558,"context_line":"            )"},{"line_number":1559,"context_line":"            # both fields should be present"},{"line_number":1560,"context_line":"            self.assertIn(\u0027num_attempts\u0027, obj)"},{"line_number":1561,"context_line":"            self.assertIn(\u0027hosts\u0027, obj)"},{"line_number":1562,"context_line":""},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"class TestMappingRequestGroupsToProviders(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"0977576d_cc4403cc","line":1561,"in_reply_to":"198ebf28_c524b479","updated":"2026-10-13 13:08:55.000000000","message":"Acknowledged","commit_id":"c5174d726385c242e731e1caaf4e22b23b252f37"}],"nova/tests/unit/policies/base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cd37c029254edaa5a394394cc73637b53d4f0c19","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                    \"rule:project_manager_api or rule:context_is_admin\","},{"line_number":220,"context_line":"                \"project_member_or_admin\":"},{"line_number":221,"context_line":"                    \"rule:project_member_api or rule:context_is_admin\","},{"line_number":222,"context_line":"                \"project_reader_or_admin\":"},{"line_number":223,"context_line":"                    \"rule:project_reader_api or rule:context_is_admin\","},{"line_number":224,"context_line":"                \"service_api\": \"role:service\","},{"line_number":225,"context_line":"            })"}],"source_content_type":"text/x-python","patch_set":5,"id":"de4ceaa7_87c19804","side":"PARENT","line":222,"range":{"start_line":222,"start_character":17,"end_line":222,"end_character":40},"updated":"2026-10-12 11:56:12.000000000","message":"ok so this is a duplicate rules.","commit_id":"bcc30f4824a7f5f3a05de7b0ce3cf7abda28c063"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"08b6fa52a8798fa28960f915a09e02573708463f","unresolved":false,"context_lines":[{"line_number":712,"context_line":"        \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":713,"context_line":"        \u0027node\u0027: \u0027fake-node\u0027,"},{"line_number":714,"context_line":"        \u0027task_state\u0027: None,"},{"line_number":715,"context_line":"        \u0027vm_state\u0027: None,"},{"line_number":716,"context_line":"        \u0027trusted_certs\u0027: None,"},{"line_number":717,"context_line":"        \u0027resources\u0027: None,"},{"line_number":718,"context_line":"        \u0027migration_context\u0027: None,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5b552be2_d65b6f27","side":"PARENT","line":715,"updated":"2026-10-19 16:32:15.000000000","message":"Note to self: at first I did not see why this is being removed but realized it is duplicated on L705.","commit_id":"5d13e6d99670ba387b0d81202877d11e43d3a59f"}]}
