)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c4281aec5a178cc40e00e5af9365b79a7e5da478","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ffa0ccb1_c58025d1","updated":"2025-06-11 14:14:01.000000000","message":"I\u0027m going to fix the typos so I can approve the series","commit_id":"33b60c57d7f7f26c32d66bd16b1b5dd7658890d5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a12e958ae2d68dd37c7a3c7a28622dad2e6ebcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"62969bbf_5d84b178","updated":"2025-06-11 14:24:18.000000000","message":"Sylvain was +2 before I just fixed typos","commit_id":"0bfac5c7fedece9fe28e0eebf9c7fb535a5ee431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3af4322d15dab72d329a440741b11c007105d3c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8857e1ed_1e0dc4ad","updated":"2025-06-11 23:08:12.000000000","message":"recheck timeout","commit_id":"0bfac5c7fedece9fe28e0eebf9c7fb535a5ee431"}],"nova/pci/request.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5af700b856ad029ac043edd0756877d10a3c2f2a","unresolved":true,"context_lines":[{"line_number":131,"context_line":"        if alias_with_multiple_specs:"},{"line_number":132,"context_line":"            raise exception.PciInvalidAlias("},{"line_number":133,"context_line":"                \"The PCI alias(es) %s have multiple specs but \""},{"line_number":134,"context_line":"                \"[filter_scheduler]pci_in_placement is True. PCI in Placement \""},{"line_number":135,"context_line":"                \"feature only support one spec per alias. You can assign the \""},{"line_number":136,"context_line":"                \"same resource_class to multiple [pci]device_spec matchers to \""},{"line_number":137,"context_line":"                \"allow using different devices for the same alias.\""}],"source_content_type":"text/x-python","patch_set":3,"id":"b700d03d_6bb1928d","line":134,"range":{"start_line":134,"start_character":61,"end_line":134,"end_character":64},"updated":"2025-06-11 14:02:39.000000000","message":"\"_The_ PCI in Placement ...\"","commit_id":"33b60c57d7f7f26c32d66bd16b1b5dd7658890d5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a12e958ae2d68dd37c7a3c7a28622dad2e6ebcd","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        if alias_with_multiple_specs:"},{"line_number":132,"context_line":"            raise exception.PciInvalidAlias("},{"line_number":133,"context_line":"                \"The PCI alias(es) %s have multiple specs but \""},{"line_number":134,"context_line":"                \"[filter_scheduler]pci_in_placement is True. PCI in Placement \""},{"line_number":135,"context_line":"                \"feature only support one spec per alias. You can assign the \""},{"line_number":136,"context_line":"                \"same resource_class to multiple [pci]device_spec matchers to \""},{"line_number":137,"context_line":"                \"allow using different devices for the same alias.\""}],"source_content_type":"text/x-python","patch_set":3,"id":"83cfe9c2_9a55930f","line":134,"range":{"start_line":134,"start_character":61,"end_line":134,"end_character":64},"in_reply_to":"b700d03d_6bb1928d","updated":"2025-06-11 14:24:18.000000000","message":"Done","commit_id":"33b60c57d7f7f26c32d66bd16b1b5dd7658890d5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5af700b856ad029ac043edd0756877d10a3c2f2a","unresolved":true,"context_lines":[{"line_number":132,"context_line":"            raise exception.PciInvalidAlias("},{"line_number":133,"context_line":"                \"The PCI alias(es) %s have multiple specs but \""},{"line_number":134,"context_line":"                \"[filter_scheduler]pci_in_placement is True. PCI in Placement \""},{"line_number":135,"context_line":"                \"feature only support one spec per alias. You can assign the \""},{"line_number":136,"context_line":"                \"same resource_class to multiple [pci]device_spec matchers to \""},{"line_number":137,"context_line":"                \"allow using different devices for the same alias.\""},{"line_number":138,"context_line":"                % \",\".join(alias_with_multiple_specs))"}],"source_content_type":"text/x-python","patch_set":3,"id":"8dd73e48_a3b22d18","line":135,"range":{"start_line":135,"start_character":30,"end_line":135,"end_character":37},"updated":"2025-06-11 14:02:39.000000000","message":"\"supports\"","commit_id":"33b60c57d7f7f26c32d66bd16b1b5dd7658890d5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a12e958ae2d68dd37c7a3c7a28622dad2e6ebcd","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            raise exception.PciInvalidAlias("},{"line_number":133,"context_line":"                \"The PCI alias(es) %s have multiple specs but \""},{"line_number":134,"context_line":"                \"[filter_scheduler]pci_in_placement is True. PCI in Placement \""},{"line_number":135,"context_line":"                \"feature only support one spec per alias. You can assign the \""},{"line_number":136,"context_line":"                \"same resource_class to multiple [pci]device_spec matchers to \""},{"line_number":137,"context_line":"                \"allow using different devices for the same alias.\""},{"line_number":138,"context_line":"                % \",\".join(alias_with_multiple_specs))"}],"source_content_type":"text/x-python","patch_set":3,"id":"edb74d98_41d06a74","line":135,"range":{"start_line":135,"start_character":30,"end_line":135,"end_character":37},"in_reply_to":"8dd73e48_a3b22d18","updated":"2025-06-11 14:24:18.000000000","message":"Done","commit_id":"33b60c57d7f7f26c32d66bd16b1b5dd7658890d5"}],"nova/tests/functional/regressions/test_bug_2102038.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c4281aec5a178cc40e00e5af9365b79a7e5da478","unresolved":true,"context_lines":[{"line_number":55,"context_line":"            \"[filter_scheduler]pci_in_placement is True. PCI in Placement \""},{"line_number":56,"context_line":"            \"feature only support one spec per alias. You can assign the \""},{"line_number":57,"context_line":"            \"same resource_class to multiple [pci]device_spec matchers to \""},{"line_number":58,"context_line":"            \"allow using different devices for the same alias.\","},{"line_number":59,"context_line":"            exc.response.text)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1e5b3d7b_24e17d5b","line":58,"updated":"2025-06-11 14:14:01.000000000","message":"In general, I think we can be using `assertRaisesRegex()` to avoid having to encode the whole message here, and thus change this assertion when typos are fixed.","commit_id":"33b60c57d7f7f26c32d66bd16b1b5dd7658890d5"}]}
