)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f0dc6750c3dea67d4e9883c3460d15c3bf2badd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"eebeeec4_d815def3","updated":"2025-05-20 05:48:27.000000000","message":"recheck neutron-tempest-plugin-ovn-ubuntu-jammy-2025-1","commit_id":"3cffe86c0ea91ceab7c5b8995b1fd730e3875a30"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"f10e0b72e844782e8ea03f1c6926af11a7a5e500","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"38c76bab_91bba118","updated":"2025-06-05 07:57:19.000000000","message":"Reviewed first in 2024.2 backport, wrong tab order (same comment for this, identical change)","commit_id":"bceb866190696e8609f78d6516493fdbc351e108"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"75a85ae2006f756624dcfe9d9888594606f6c8e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dcf8f75a_345d6d0a","updated":"2025-06-06 11:05:23.000000000","message":"recheck neutron-functional","commit_id":"bceb866190696e8609f78d6516493fdbc351e108"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c22c60186190b714d9b5aee57d9843ccff242e9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a9fe277e_33a63154","updated":"2025-06-06 05:58:07.000000000","message":"recheck neutron-tempest-plugin-ovn-ubuntu-jammy-2025-1","commit_id":"bceb866190696e8609f78d6516493fdbc351e108"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2295f3d13890047b5dffda486cb1ef6a437eca42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"516a35bc_4ee465b1","updated":"2025-06-05 18:09:32.000000000","message":"recheck unrelated failure","commit_id":"bceb866190696e8609f78d6516493fdbc351e108"}],"neutron/common/utils.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d9720ca8ccc3a6cc36433090dfdcee77f66ac574","unresolved":true,"context_lines":[{"line_number":1121,"context_line":"    \"\"\"Return if a value is iterable but not a string type\"\"\""},{"line_number":1122,"context_line":"    return (isinstance(value, abc.Iterable) and"},{"line_number":1123,"context_line":"            not isinstance(value, abc.ByteString) and"},{"line_number":1124,"context_line":"            not isinstance(value, str))"}],"source_content_type":"text/x-python","patch_set":1,"id":"f3ba84fc_fca8d285","line":1124,"updated":"2025-06-02 07:07:53.000000000","message":"why this is added here? I don\u0027t see it in original patch and I don\u0027t see it to be used by changes in this patch really","commit_id":"3cffe86c0ea91ceab7c5b8995b1fd730e3875a30"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7d1f78b976c07af06571d4eb0f278f7b6a7dbe71","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    \"\"\"Return if a value is iterable but not a string type\"\"\""},{"line_number":1122,"context_line":"    return (isinstance(value, abc.Iterable) and"},{"line_number":1123,"context_line":"            not isinstance(value, abc.ByteString) and"},{"line_number":1124,"context_line":"            not isinstance(value, str))"}],"source_content_type":"text/x-python","patch_set":1,"id":"bb99adae_a1b5bb40","line":1124,"in_reply_to":"b9f41c04_71272bba","updated":"2025-06-02 07:14:20.000000000","message":"Ahhhhh no, hold on. This method was implemented in https://review.opendev.org/c/openstack/neutron/+/949584, in current master branch. Because it is used here in this patch but is not present in stable branches, I needed to re-implement it in the stable patches.","commit_id":"3cffe86c0ea91ceab7c5b8995b1fd730e3875a30"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"3a7d0229da1551c683bb703272f734768163ad4c","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    \"\"\"Return if a value is iterable but not a string type\"\"\""},{"line_number":1122,"context_line":"    return (isinstance(value, abc.Iterable) and"},{"line_number":1123,"context_line":"            not isinstance(value, abc.ByteString) and"},{"line_number":1124,"context_line":"            not isinstance(value, str))"}],"source_content_type":"text/x-python","patch_set":1,"id":"db1e8698_5b2e151a","line":1124,"in_reply_to":"bb99adae_a1b5bb40","updated":"2025-06-03 11:26:10.000000000","message":"That sounds OK to have, I\u0027d suggest either one of:\n* adding a comment in this backport series commit message to point to that (\"also backporting a helper function from change-id xxx\" or similar)\n* or backport https://review.opendev.org/c/openstack/neutron/+/949584 entirely, it looks ok to backport and a nice bugfix candidate (and rebase this one on top)","commit_id":"3cffe86c0ea91ceab7c5b8995b1fd730e3875a30"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c9e7510af6e8e4c108b004b682be2f9f7d9017e7","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    \"\"\"Return if a value is iterable but not a string type\"\"\""},{"line_number":1122,"context_line":"    return (isinstance(value, abc.Iterable) and"},{"line_number":1123,"context_line":"            not isinstance(value, abc.ByteString) and"},{"line_number":1124,"context_line":"            not isinstance(value, str))"}],"source_content_type":"text/x-python","patch_set":1,"id":"15613941_c6718bc0","line":1124,"in_reply_to":"db1e8698_5b2e151a","updated":"2025-06-03 13:03:31.000000000","message":"Done (backport of mentioned patch).","commit_id":"3cffe86c0ea91ceab7c5b8995b1fd730e3875a30"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fe7a6d37d6585f3469d51c251a36a2f74baf29aa","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    \"\"\"Return if a value is iterable but not a string type\"\"\""},{"line_number":1122,"context_line":"    return (isinstance(value, abc.Iterable) and"},{"line_number":1123,"context_line":"            not isinstance(value, abc.ByteString) and"},{"line_number":1124,"context_line":"            not isinstance(value, str))"}],"source_content_type":"text/x-python","patch_set":1,"id":"b9f41c04_71272bba","line":1124,"in_reply_to":"f3ba84fc_fca8d285","updated":"2025-06-02 07:11:24.000000000","message":"This is a leftover from another patch. I have no idea what this method is doing here...","commit_id":"3cffe86c0ea91ceab7c5b8995b1fd730e3875a30"}]}
