)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37041,"name":"Maxime Lubin","display_name":"Maxime Lubin","email":"maxime.lubin@shadow.tech","username":"Previsou"},"change_message_id":"2e72279b6bf47132717ac29f48c4f56b307fe80a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8e2877e6_ad6c9010","updated":"2024-09-24 15:26:56.000000000","message":"Looks good to me, and very similar to what I was going to propose for https://review.opendev.org/c/openstack/nova-specs/+/920687.\n\nI would rather build upon your work rather than submitting a competing implementation.","commit_id":"b466a913214192517993cdb8debff9894cafc4dd"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"df3dc4caf881be8cf9698c40ad22921f9aff0892","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d6b60463_3655161a","updated":"2024-12-01 08:26:28.000000000","message":"recheck","commit_id":"05f9cef2899b83bea70729099f3c67a4e350ea7e"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"47afbdea71b25a9e48af85f195a5a57d74d2751c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1272730c_27e09cfc","updated":"2024-12-31 20:30:17.000000000","message":"recheck","commit_id":"ca79eb208a7968b3a1c976fcf0ec992ae28fd44c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a2ebec2b06b8746983a2f0e8eaeaa64e68b76bc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"c5156b10_30041a91","updated":"2025-05-22 07:26:27.000000000","message":"recheck url access failure (network?)","commit_id":"28e473ca995675bae0a111a659a800f7776924c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aab2a8e73efcaa09c434f75406233e64e2288c3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"dfa629c3_075dce82","updated":"2025-05-23 07:33:31.000000000","message":"the object changes look good to me ill look at the implementaion changes early next week","commit_id":"23e21cde3b7fa91b079ea74f3647e83321af2fb2"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c1baebce8ebb02e040f2342e77f2085d7cd3c0d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"1f8373a6_2f39c4bb","updated":"2025-06-24 01:26:05.000000000","message":"recheck nova-next timeout","commit_id":"7fecb9be417b821b91904c3974e33e3ef17933b5"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"b816d04c1afa3df257afdaae5c06348edc5895a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"40ef2399_fdea8e43","updated":"2025-06-29 08:47:55.000000000","message":"recheck nova-ovs-hybrid-plug","commit_id":"6bdc020ab6da770640b90b38b31a80a1e002ae81"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ecde47e184851ce4e38fb56a019dd761b71b0ee4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"1b917319_9818a7fe","updated":"2025-07-02 19:33:36.000000000","message":"recheck neutron bug","commit_id":"55e037c6cbd1fd9c411787ad5b6cd20a9cdf3313"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"e9e72aad5f924338820ba0c5dcbe70b7c63287fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"069565a7_94da6083","updated":"2025-07-09 06:06:51.000000000","message":"LGTM","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d34764f786bcb384f34cacc850a00f0d71b05d01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"383dd379_1f63300c","updated":"2025-07-24 16:29:20.000000000","message":"recheck base patch merged","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"98385b4fb1628bbbd72d5ac5ffe032ab0d0c4e0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"3aacee9e_77baca85","updated":"2025-07-25 10:22:10.000000000","message":"recheck grenade","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"19d6f200bbaa2304271de4f6ddde860ccc6a0293","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"930da124_b2e532db","updated":"2025-07-25 04:03:05.000000000","message":"recheck grenade","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ab142aed0f57d9662cd00d89415f1a9dafe3f501","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"b109403e_e02ca70d","updated":"2025-07-25 22:54:00.000000000","message":"recheck grenade","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"8bf3d7bc2564c38b67da3e74f7d8b24a7716f691","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"db029df5_a495c285","updated":"2025-07-24 20:48:27.000000000","message":"recheck grenade","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"bac425d78028b92e9f8520385b3f1ca87b43f35c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"48c711cf_448d20dc","updated":"2025-07-25 07:53:24.000000000","message":"recheck multi-cell","commit_id":"697c05dd558461cf7b73a43450e053d19e620226"}],"nova/objects/fields.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9025ff13d25b1188bb1269dcb2e64fd15278bde1","unresolved":true,"context_lines":[{"line_number":881,"context_line":"    NEC_XHCI \u003d \u0027nec-xhci\u0027"},{"line_number":882,"context_line":"    QEMU_XHCI \u003d \u0027qemu-xhci\u0027"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    ALL \u003d (NONE, NEC_XHCI, QEMU_XHCI)"},{"line_number":885,"context_line":""},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"class NotificationPriority(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9381f90d_e22a4c98","line":884,"updated":"2025-01-29 20:16:18.000000000","message":"so based on https://libvirt.org/formatdomain.html#controllers\n\n```\nusb\n\n    A usb controller has an optional attribute model, which is one of \"piix3-uhci\", \"piix4-uhci\", \"ehci\", \"ich9-ehci1\", \"ich9-uhci1\", \"ich9-uhci2\", \"ich9-uhci3\", \"vt82c686b-uhci\", \"pci-ohci\", \"nec-xhci\", \"qusb1\" (xen pvusb with qemu backend, version 1.1), \"qusb2\" (xen pvusb with qemu backend, version 2.0) or \"qemu-xhci\". Additionally, since 0.10.0, if the USB bus needs to be explicitly disabled for the guest, model\u003d\u0027none\u0027 may be used. Since 1.0.5, no default USB controller will be built on s390. Since 1.3.5, USB controllers accept a ports attribute to configure how many devices can be connected to the controller.\n\n```\nall of the supproted modes were added a very very long time ago so will be supproted by our min libvirt/qemu version.\n\nso no version check or trait is requried.\n\ni think we do need an min compute service bump for this and an api check for the same reason as the previous patch.\nwe do not have a way to request that the instnace is scheduler to an upgrade host\nso untill all the computes are upgrade we shoudl block creating instnace that request a specific usb model until the min compute service is above the one that adds this.","commit_id":"d062d80ecaae360c42600210bdf1b1b3346da4a1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ef6afaf79c79835082213b17f4f3a1b736aa53e","unresolved":false,"context_lines":[{"line_number":881,"context_line":"    NEC_XHCI \u003d \u0027nec-xhci\u0027"},{"line_number":882,"context_line":"    QEMU_XHCI \u003d \u0027qemu-xhci\u0027"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"    ALL \u003d (NONE, NEC_XHCI, QEMU_XHCI)"},{"line_number":885,"context_line":""},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"class NotificationPriority(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":15,"id":"4fe98263_6d73ce2f","line":884,"in_reply_to":"9381f90d_e22a4c98","updated":"2025-05-23 07:32:57.000000000","message":"Acknowledged","commit_id":"d062d80ecaae360c42600210bdf1b1b3346da4a1"}],"nova/objects/image_meta.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ef6afaf79c79835082213b17f4f3a1b736aa53e","unresolved":true,"context_lines":[{"line_number":211,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":212,"context_line":"        if target_version \u003c (1, 41):"},{"line_number":213,"context_line":"            primitive.pop(\u0027hw_usb_model\u0027, None)"},{"line_number":214,"context_line":"            primitive.pop(\u0027hw_redirected_usb_ports\u0027, None)"},{"line_number":215,"context_line":"        if target_version \u003c (1, 40):"},{"line_number":216,"context_line":"            primitive.pop(\u0027hw_sound_model\u0027, None)"},{"line_number":217,"context_line":"        if target_version \u003c (1, 39):"}],"source_content_type":"text/x-python","patch_set":29,"id":"14136bc8_12d3f1fd","line":214,"range":{"start_line":214,"start_character":27,"end_line":214,"end_character":51},"updated":"2025-05-23 07:32:57.000000000","message":"i proably would have just acalled it\n```suggestion\n            primitive.pop(\u0027hw_usb_ports\u0027, None)\n```","commit_id":"23e21cde3b7fa91b079ea74f3647e83321af2fb2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4cb573bdb268d039ca39e28db2c10f3e800efccf","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":212,"context_line":"        if target_version \u003c (1, 41):"},{"line_number":213,"context_line":"            primitive.pop(\u0027hw_usb_model\u0027, None)"},{"line_number":214,"context_line":"            primitive.pop(\u0027hw_redirected_usb_ports\u0027, None)"},{"line_number":215,"context_line":"        if target_version \u003c (1, 40):"},{"line_number":216,"context_line":"            primitive.pop(\u0027hw_sound_model\u0027, None)"},{"line_number":217,"context_line":"        if target_version \u003c (1, 39):"}],"source_content_type":"text/x-python","patch_set":29,"id":"4d05952f_fde3b4bf","line":214,"range":{"start_line":214,"start_character":27,"end_line":214,"end_character":51},"in_reply_to":"14136bc8_12d3f1fd","updated":"2025-07-08 23:15:56.000000000","message":"Acknowledged","commit_id":"23e21cde3b7fa91b079ea74f3647e83321af2fb2"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":37041,"name":"Maxime Lubin","display_name":"Maxime Lubin","email":"maxime.lubin@shadow.tech","username":"Previsou"},"change_message_id":"2e72279b6bf47132717ac29f48c4f56b307fe80a","unresolved":true,"context_lines":[{"line_number":6787,"context_line":"        image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":6788,"context_line":"    ) -\u003e None:"},{"line_number":6789,"context_line":"        \"\"\"Add redirected USB ports, if requested.\"\"\""},{"line_number":6790,"context_line":"        count \u003d hardware.get_redirected_usb_ports(flavor, image_meta)"},{"line_number":6791,"context_line":"        for i in range(count):"},{"line_number":6792,"context_line":"            guest.add_device(vconfig.LibvirtConfigGuestUSBRedirect())"},{"line_number":6793,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"18be9337_6a5a19f4","line":6790,"updated":"2024-09-24 15:26:56.000000000","message":"If the number of added redirection devices is larger than the controller model number of ports, extra simulated USB hubs will be added by QEMU, and extra devices will be plugged into those.\n\nFor example, with qemu-xhci controller, the default number is 4. When a 4th device redirect device is added, qemu/libvirt will automatically create a USB hub, and connect the device to it. It could create unwatend bandwidth limitation, but I suspect this case will hardly ever be seen in real life - if ever.\n\nMight not be an issue with the envisioned usecase, but perhaps you can consider:\n1. setting a highger default number of ports? (may depend on the controller mdoel though)\nor\n2. allow configuring it through a third option/parameter?","commit_id":"b466a913214192517993cdb8debff9894cafc4dd"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"56385be6db050ab6d3bf1288305d7fb02183cd3f","unresolved":false,"context_lines":[{"line_number":6787,"context_line":"        image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":6788,"context_line":"    ) -\u003e None:"},{"line_number":6789,"context_line":"        \"\"\"Add redirected USB ports, if requested.\"\"\""},{"line_number":6790,"context_line":"        count \u003d hardware.get_redirected_usb_ports(flavor, image_meta)"},{"line_number":6791,"context_line":"        for i in range(count):"},{"line_number":6792,"context_line":"            guest.add_device(vconfig.LibvirtConfigGuestUSBRedirect())"},{"line_number":6793,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff77d1ca_1624ae06","line":6790,"in_reply_to":"18be9337_6a5a19f4","updated":"2025-01-28 19:25:20.000000000","message":"Hey, sorry for my slow reply.\n\nAfter talking this through with Sean Mooney, I ended up doing two things here: I\u0027ve reduced the list of supported controllers to just qemu-xhci and nec-xhci. The others are ancient and don\u0027t perform well on virtualized or 64 bit systems, and also don\u0027t support all USB device types. Only supporting XHCI also made it simpler to limit the maximum number of ports on the controller to one that is definitely supported by qemu, so there is now a limit of 15 imposed.\n\nHowever, I don\u0027t think its possible for me to stop you trying to attach a 16 USB redirect device in the SPICE protocol -- Nova isn\u0027t running anything in that code path so I don\u0027t see how we could intervene. Perhaps I am misunderstanding your question?","commit_id":"b466a913214192517993cdb8debff9894cafc4dd"},{"author":{"_account_id":37041,"name":"Maxime Lubin","display_name":"Maxime Lubin","email":"maxime.lubin@shadow.tech","username":"Previsou"},"change_message_id":"c4b9a571d4d11db7d0399dba9c4cd414066107b7","unresolved":false,"context_lines":[{"line_number":6787,"context_line":"        image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":6788,"context_line":"    ) -\u003e None:"},{"line_number":6789,"context_line":"        \"\"\"Add redirected USB ports, if requested.\"\"\""},{"line_number":6790,"context_line":"        count \u003d hardware.get_redirected_usb_ports(flavor, image_meta)"},{"line_number":6791,"context_line":"        for i in range(count):"},{"line_number":6792,"context_line":"            guest.add_device(vconfig.LibvirtConfigGuestUSBRedirect())"},{"line_number":6793,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"a1d75986_18236900","line":6790,"in_reply_to":"ff77d1ca_1624ae06","updated":"2025-01-30 07:24:08.000000000","message":"Hey, no problem.\nYour latest patch addresses my concerns. If I am allowed to specify the number of ports, all is good.","commit_id":"b466a913214192517993cdb8debff9894cafc4dd"}]}
