)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"6ab8540a838bd9c55a9d6da04a8fb0095635293e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"24bf4c6c_c4632530","updated":"2025-05-25 20:25:48.000000000","message":"recheck nova-next timeout","commit_id":"e119c4613da50efbc3080291b8a99f4c65ef504a"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ba539b713fdf479508c0172254a8a5e48cd000dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"46328475_3365f384","updated":"2025-06-24 01:26:27.000000000","message":"recheck ceph","commit_id":"200139721af8be89ab5efc6426e7abf31431967b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"32cb69ce3895e38526d247265c78ba00a5b662bb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"61078172_7edd16ee","updated":"2025-06-24 13:19:05.000000000","message":"recheck devstack failed ot sack in grenade.\n\nso overall im pretty OK with the as it stands.\n\nideally we would have a release note in this patch and the sound model patch but im fine with just having one here.\n\nwould you mind adding one either in this patch or as a dedicated follow up patch\n\nim also wondering if/how we should extend the docs for this feature.\n\nim wondering if it would make sense to mention this here\n\nhttps://docs.openstack.org/nova/latest/admin/remote-console-access.html\nor here https://docs.openstack.org/nova/latest/admin/libvirt-misc.html\n\nwe do not strictly need too but it would make the capablity more discoverable if we did.\n\nso +1 for now, let ci if ci passes with the recheck","commit_id":"200139721af8be89ab5efc6426e7abf31431967b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"88430e7d886a7a8e11bd0369c8fc363d4a428835","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"aa997544_6d846740","in_reply_to":"61078172_7edd16ee","updated":"2025-07-29 16:18:26.000000000","message":"Done","commit_id":"200139721af8be89ab5efc6426e7abf31431967b"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"76ff5201a2af44435330f5530f4fd540349a54e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"57629861_892f3b73","updated":"2025-06-29 08:48:12.000000000","message":"recheck nova-ovs-hybrid-plug","commit_id":"b6f1f46b47ac11196fe38aeb0b85138a3910ebcc"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"3ac12b761df07dafb917037c39b0fcec4d4e5bdd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9c177325_c88715c0","updated":"2025-07-03 07:11:40.000000000","message":"one minor nits, otherwise LGTM.","commit_id":"dd06c5d0fe44a72c370741ed3eaf77b661ac2cf1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c3b7ced1896919981ea823a9855630b13b8fd3b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c7436d16_e3404674","updated":"2025-07-03 01:34:22.000000000","message":"recheck I\u0027m really not sure why this one failed","commit_id":"dd06c5d0fe44a72c370741ed3eaf77b661ac2cf1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"4902679326cdde855ca6028e8bb4e0b6e2b917de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ac02a0ec_164edbf2","updated":"2025-07-02 19:33:57.000000000","message":"recheck neutron bug","commit_id":"dd06c5d0fe44a72c370741ed3eaf77b661ac2cf1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"0840d6394a4211d4f310b219de0c8e1d69652222","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"96e87be8_74e891cb","updated":"2025-07-24 07:31:20.000000000","message":"I have fixes for these comments, but am holding off on upload in the hope that https://review.opendev.org/c/openstack/nova/+/940770/18 will merge first.","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ffddc527c9698764bdbb82741d45e3316dfad3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ea2662f5_480b0bfe","updated":"2025-07-23 15:13:52.000000000","message":"Thing there\u0027s a small bug here.","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"06a3b195183585549c8aa771b1268649b808ba6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9142aadb_37a811e5","updated":"2025-07-07 09:20:22.000000000","message":"recheck live migration","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d643062452c7443df6ee150c77d1d50708fe973a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9ca94f21_08985ba0","in_reply_to":"ea2662f5_480b0bfe","updated":"2025-07-23 15:14:05.000000000","message":"*think","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"477700beb4259c964eeea2216288b68013e98675","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"154d5c25_60cb2cb7","updated":"2025-07-29 16:18:18.000000000","message":"All of my comments have been addressed. Thanks, mikal","commit_id":"3eea2d58a9a5857b8e4b2a043fac19f2ecb5ebfa"}],"nova/api/validation/extra_specs/hw.py":[{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"3ac12b761df07dafb917037c39b0fcec4d4e5bdd","unresolved":true,"context_lines":[{"line_number":568,"context_line":"    base.ExtraSpecValidator("},{"line_number":569,"context_line":"        name\u003d\u0027hw:redirected_usb_ports\u0027,"},{"line_number":570,"context_line":"        description\u003d("},{"line_number":571,"context_line":"            \u0027The number of redirected USB ports to add to the virtual machine.\u0027"},{"line_number":572,"context_line":"            \u0027Only supported by the libvirt virt driver. If unset, no \u0027"},{"line_number":573,"context_line":"            \u0027redirected USB ports are added. The maximum value is 15.\u0027"},{"line_number":574,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"c84b64a9_dde74526","line":571,"range":{"start_line":571,"start_character":70,"end_line":571,"end_character":77},"updated":"2025-07-03 07:11:40.000000000","message":"you missed a space here.","commit_id":"dd06c5d0fe44a72c370741ed3eaf77b661ac2cf1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"43bbc6acabc9ad32e1724f69b95030a5a1e5f2da","unresolved":false,"context_lines":[{"line_number":568,"context_line":"    base.ExtraSpecValidator("},{"line_number":569,"context_line":"        name\u003d\u0027hw:redirected_usb_ports\u0027,"},{"line_number":570,"context_line":"        description\u003d("},{"line_number":571,"context_line":"            \u0027The number of redirected USB ports to add to the virtual machine.\u0027"},{"line_number":572,"context_line":"            \u0027Only supported by the libvirt virt driver. If unset, no \u0027"},{"line_number":573,"context_line":"            \u0027redirected USB ports are added. The maximum value is 15.\u0027"},{"line_number":574,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"a06581ad_5b5ddc70","line":571,"range":{"start_line":571,"start_character":70,"end_line":571,"end_character":77},"in_reply_to":"c84b64a9_dde74526","updated":"2025-07-08 23:16:21.000000000","message":"Done","commit_id":"dd06c5d0fe44a72c370741ed3eaf77b661ac2cf1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ffddc527c9698764bdbb82741d45e3316dfad3b","unresolved":true,"context_lines":[{"line_number":575,"context_line":"        value\u003d{"},{"line_number":576,"context_line":"            \u0027type\u0027: int,"},{"line_number":577,"context_line":"            \u0027description\u0027: \u0027The number of USB redirection devices to add\u0027,"},{"line_number":578,"context_line":"            \u0027min\u0027: 0,"},{"line_number":579,"context_line":"        },"},{"line_number":580,"context_line":"    ),"},{"line_number":581,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"a0f28e12_25b84438","line":578,"updated":"2025-07-23 15:13:52.000000000","message":"Any reason not to set `max` here?","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"0840d6394a4211d4f310b219de0c8e1d69652222","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        value\u003d{"},{"line_number":576,"context_line":"            \u0027type\u0027: int,"},{"line_number":577,"context_line":"            \u0027description\u0027: \u0027The number of USB redirection devices to add\u0027,"},{"line_number":578,"context_line":"            \u0027min\u0027: 0,"},{"line_number":579,"context_line":"        },"},{"line_number":580,"context_line":"    ),"},{"line_number":581,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"e2d9903f_1dfd20c1","line":578,"in_reply_to":"a0f28e12_25b84438","updated":"2025-07-24 07:31:20.000000000","message":"Nope, fixed.","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"}],"nova/virt/hardware.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ffddc527c9698764bdbb82741d45e3316dfad3b","unresolved":true,"context_lines":[{"line_number":2984,"context_line":"    :returns: An integer number of ports, else 0."},{"line_number":2985,"context_line":"    \"\"\""},{"line_number":2986,"context_line":"    count \u003d _get_unique_flavor_image_meta("},{"line_number":2987,"context_line":"        \u0027redirected_usb_ports\u0027, flavor, image_meta)"},{"line_number":2988,"context_line":"    if not count:"},{"line_number":2989,"context_line":"        count \u003d 0"},{"line_number":2990,"context_line":"    elif count \u003e 15:"}],"source_content_type":"text/x-python","patch_set":9,"id":"a64db0f4_875f3994","line":2987,"updated":"2025-07-23 15:13:52.000000000","message":"Flavor extra spec values will always be strings, right? I suspect you\u0027re missing a conversion to int here if so (and a test for same).","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"0840d6394a4211d4f310b219de0c8e1d69652222","unresolved":false,"context_lines":[{"line_number":2984,"context_line":"    :returns: An integer number of ports, else 0."},{"line_number":2985,"context_line":"    \"\"\""},{"line_number":2986,"context_line":"    count \u003d _get_unique_flavor_image_meta("},{"line_number":2987,"context_line":"        \u0027redirected_usb_ports\u0027, flavor, image_meta)"},{"line_number":2988,"context_line":"    if not count:"},{"line_number":2989,"context_line":"        count \u003d 0"},{"line_number":2990,"context_line":"    elif count \u003e 15:"}],"source_content_type":"text/x-python","patch_set":9,"id":"e4018603_679f39d9","line":2987,"in_reply_to":"a64db0f4_875f3994","updated":"2025-07-24 07:31:20.000000000","message":"Done.","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ffddc527c9698764bdbb82741d45e3316dfad3b","unresolved":true,"context_lines":[{"line_number":2987,"context_line":"        \u0027redirected_usb_ports\u0027, flavor, image_meta)"},{"line_number":2988,"context_line":"    if not count:"},{"line_number":2989,"context_line":"        count \u003d 0"},{"line_number":2990,"context_line":"    elif count \u003e 15:"},{"line_number":2991,"context_line":"        # NOTE(mikal): XHCI controllers only support up to 15 ports. This isn\u0027t"},{"line_number":2992,"context_line":"        # documented in the libvirt domain XML documentation at the moment, but"},{"line_number":2993,"context_line":"        # is at https://www.kraxel.org/blog/2018/08/qemu-usb-tips/."}],"source_content_type":"text/x-python","patch_set":9,"id":"72fbaccb_be8fa84a","line":2990,"updated":"2025-07-23 15:13:52.000000000","message":"iirc, flavor extra spec validation doesn\u0027t happen on older microversions. This being the case, do we need to worry about negative values?","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"0840d6394a4211d4f310b219de0c8e1d69652222","unresolved":false,"context_lines":[{"line_number":2987,"context_line":"        \u0027redirected_usb_ports\u0027, flavor, image_meta)"},{"line_number":2988,"context_line":"    if not count:"},{"line_number":2989,"context_line":"        count \u003d 0"},{"line_number":2990,"context_line":"    elif count \u003e 15:"},{"line_number":2991,"context_line":"        # NOTE(mikal): XHCI controllers only support up to 15 ports. This isn\u0027t"},{"line_number":2992,"context_line":"        # documented in the libvirt domain XML documentation at the moment, but"},{"line_number":2993,"context_line":"        # is at https://www.kraxel.org/blog/2018/08/qemu-usb-tips/."}],"source_content_type":"text/x-python","patch_set":9,"id":"b6d614d5_60b74a0a","line":2990,"in_reply_to":"72fbaccb_be8fa84a","updated":"2025-07-24 07:31:20.000000000","message":"Done","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ffddc527c9698764bdbb82741d45e3316dfad3b","unresolved":true,"context_lines":[{"line_number":2991,"context_line":"        # NOTE(mikal): XHCI controllers only support up to 15 ports. This isn\u0027t"},{"line_number":2992,"context_line":"        # documented in the libvirt domain XML documentation at the moment, but"},{"line_number":2993,"context_line":"        # is at https://www.kraxel.org/blog/2018/08/qemu-usb-tips/."},{"line_number":2994,"context_line":"        raise exception.Invalid(\u0027Nova  only supports up to 15 USB ports.\u0027)"},{"line_number":2995,"context_line":""},{"line_number":2996,"context_line":"    return count"}],"source_content_type":"text/x-python","patch_set":9,"id":"9dde601a_39ba8488","line":2994,"updated":"2025-07-23 15:13:52.000000000","message":"nit:\n\n```suggestion\n        raise exception.Invalid(\u0027Nova only supports up to 15 USB ports.\u0027)\n```","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"0840d6394a4211d4f310b219de0c8e1d69652222","unresolved":false,"context_lines":[{"line_number":2991,"context_line":"        # NOTE(mikal): XHCI controllers only support up to 15 ports. This isn\u0027t"},{"line_number":2992,"context_line":"        # documented in the libvirt domain XML documentation at the moment, but"},{"line_number":2993,"context_line":"        # is at https://www.kraxel.org/blog/2018/08/qemu-usb-tips/."},{"line_number":2994,"context_line":"        raise exception.Invalid(\u0027Nova  only supports up to 15 USB ports.\u0027)"},{"line_number":2995,"context_line":""},{"line_number":2996,"context_line":"    return count"}],"source_content_type":"text/x-python","patch_set":9,"id":"c9fc5b98_133b9b97","line":2994,"in_reply_to":"9dde601a_39ba8488","updated":"2025-07-24 07:31:20.000000000","message":"Done","commit_id":"b37a4a3814aff437042d669ad3eb7601d451a60d"}]}
