)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":17,"context_line":"APIImpact"},{"line_number":18,"context_line":"Implements: blueprint flavor-image-based-vif-multiqueue-limit"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"},{"line_number":21,"context_line":"Change-Id: Ib09d6fdcbfed8b32c036d26291290715813b55db"},{"line_number":22,"context_line":"Signed-off-by: Yusho Yamaguchi \u003cys-yamaguchi@kddi.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"56eba5e9_e611448b","line":20,"updated":"2026-10-12 10:39:29.000000000","message":"you are not allowed to use Co-Authored-By for ai, you should use Assisted-By: instead\n\nCo-Authored-By has copyright implciation that cant be ascibed to an llm","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":false,"context_lines":[{"line_number":17,"context_line":"APIImpact"},{"line_number":18,"context_line":"Implements: blueprint flavor-image-based-vif-multiqueue-limit"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"},{"line_number":21,"context_line":"Change-Id: Ib09d6fdcbfed8b32c036d26291290715813b55db"},{"line_number":22,"context_line":"Signed-off-by: Yusho Yamaguchi \u003cys-yamaguchi@kddi.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"4bf71a8d_00e0cc2f","line":20,"in_reply_to":"56eba5e9_e611448b","updated":"2026-10-13 16:37:12.000000000","message":"I\u0027m so sorry.\nDone","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7c023149_27f2bebd","updated":"2026-10-12 10:39:29.000000000","message":"i dont really have an issue with allowign the number of quese to be configure\n\ni think doing it at the neutron port level would be better but im ok with the flavor or image if you make the twaks i noted inline","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"66db2f78_50511b13","in_reply_to":"7c023149_27f2bebd","updated":"2026-10-13 16:37:12.000000000","message":"Thanks for the review. \nPlease see reply on #65 about Neutron perspective","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"}],"specs/2027.1/approved/flavor-image-based-vif-multiqueue-limit.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":16,"context_line":"reduces dataplane efficiency, particularly in OVS-DPDK environments. This spec"},{"line_number":17,"context_line":"proposes allowing operators to set the number of queues explicitly per flavor"},{"line_number":18,"context_line":"(and users per image), rather than choosing only between a single queue and"},{"line_number":19,"context_line":"one queue per vCPU."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8005b174_d5f6c241","line":19,"updated":"2026-10-12 10:39:29.000000000","message":"you can actullly limit the number of queue with a per host config option as well\nalthough that not ideal for a number of reasons","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":false,"context_lines":[{"line_number":16,"context_line":"reduces dataplane efficiency, particularly in OVS-DPDK environments. This spec"},{"line_number":17,"context_line":"proposes allowing operators to set the number of queues explicitly per flavor"},{"line_number":18,"context_line":"(and users per image), rather than choosing only between a single queue and"},{"line_number":19,"context_line":"one queue per vCPU."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8cf417b9_0cb96287","line":19,"in_reply_to":"8005b174_d5f6c241","updated":"2026-10-13 16:37:12.000000000","message":"Acknowledged","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":25,"context_line":"enabled with the ``hw:vif_multiqueue_enabled`` flavor extra spec or the"},{"line_number":26,"context_line":"``hw_vif_multiqueue_enabled`` image property. The libvirt driver then"},{"line_number":27,"context_line":"configures each virtio interface with one queue pair per guest vCPU, capped"},{"line_number":28,"context_line":"only by the per-host ``[libvirt] max_queues`` option."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Operators therefore choose between one queue and one queue per vCPU. Neither"},{"line_number":31,"context_line":"fits OVS-DPDK deployments, where each vhost-user queue is polled by a PMD"}],"source_content_type":"text/x-rst","patch_set":2,"id":"998e25d7_d9c415b7","line":28,"updated":"2026-10-12 10:39:29.000000000","message":"yes that was onrginally intoduced to supprot older kernels which had much lower limtis on queue count, if its not set concently it can cause undesired behvior when live migrating vms so tying the queue count to the neutron port or the vms lifcycel cycle vie a flavor or image property woudl be better then the current config option","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":false,"context_lines":[{"line_number":25,"context_line":"enabled with the ``hw:vif_multiqueue_enabled`` flavor extra spec or the"},{"line_number":26,"context_line":"``hw_vif_multiqueue_enabled`` image property. The libvirt driver then"},{"line_number":27,"context_line":"configures each virtio interface with one queue pair per guest vCPU, capped"},{"line_number":28,"context_line":"only by the per-host ``[libvirt] max_queues`` option."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Operators therefore choose between one queue and one queue per vCPU. Neither"},{"line_number":31,"context_line":"fits OVS-DPDK deployments, where each vhost-user queue is polled by a PMD"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bfa3281e_d37c41c2","line":28,"in_reply_to":"998e25d7_d9c415b7","updated":"2026-10-13 16:37:12.000000000","message":"Acknowledged","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":35,"context_line":"vCPU count. Nova has no visibility into the OVS PMD configuration, so the"},{"line_number":36,"context_line":"operator, who configures the PMD threads, must provide this value."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"``[libvirt] max_queues`` applies uniformly to all instances on a host. The"},{"line_number":39,"context_line":"only way to give different workloads different queue counts today is to set"},{"line_number":40,"context_line":"different values on different hosts and steer flavors to them with host"},{"line_number":41,"context_line":"aggregates. This partitions capacity and restricts where those instances can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e9c19bd0_7a8eb7f0","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":69},"updated":"2026-10-12 10:39:29.000000000","message":"yep thats because it was intended to encode teh limit supported by your kernel.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":35,"context_line":"vCPU count. Nova has no visibility into the OVS PMD configuration, so the"},{"line_number":36,"context_line":"operator, who configures the PMD threads, must provide this value."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"``[libvirt] max_queues`` applies uniformly to all instances on a host. The"},{"line_number":39,"context_line":"only way to give different workloads different queue counts today is to set"},{"line_number":40,"context_line":"different values on different hosts and steer flavors to them with host"},{"line_number":41,"context_line":"aggregates. This partitions capacity and restricts where those instances can"}],"source_content_type":"text/x-rst","patch_set":2,"id":"03600ad8_c110f302","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":69},"in_reply_to":"e9c19bd0_7a8eb7f0","updated":"2026-10-13 16:37:12.000000000","message":"Done","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":62,"context_line":"They only take effect when multiqueue is enabled. Behaviour is unchanged when"},{"line_number":63,"context_line":"neither is set. The names follow the existing prototype; a name such as"},{"line_number":64,"context_line":"``hw:vif_multiqueue_count``, pairing with ``hw:vif_multiqueue_enabled``, is"},{"line_number":65,"context_line":"open to review feedback."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When multiqueue is enabled, the number of queue pairs for each virtio"},{"line_number":68,"context_line":"interface (kernel vhost and vhost-user) becomes::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"08f0d782_e95853f4","line":65,"updated":"2026-10-12 10:39:29.000000000","message":"this will certnely work but have you spoken to neutron about the possiblity of haveing this be configurable via a neutron port exteions or qos policy\n\nthe flavor and image path will apply equally to management interfaces and performace ones\n\nif you add a neutron extsion you could apply mulit queue to only the ports that needed it without needing the extra specs at all\n\nwe woudl just make the precedence port \u003e extra spec \u003e image propery","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":62,"context_line":"They only take effect when multiqueue is enabled. Behaviour is unchanged when"},{"line_number":63,"context_line":"neither is set. The names follow the existing prototype; a name such as"},{"line_number":64,"context_line":"``hw:vif_multiqueue_count``, pairing with ``hw:vif_multiqueue_enabled``, is"},{"line_number":65,"context_line":"open to review feedback."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When multiqueue is enabled, the number of queue pairs for each virtio"},{"line_number":68,"context_line":"interface (kernel vhost and vhost-user) becomes::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"eae870e2_02a62793","line":65,"in_reply_to":"08f0d782_e95853f4","updated":"2026-10-13 16:37:12.000000000","message":"Our requirement is for operators to enforce the queue count on tenants,\nwhich the flavor does naturally, while ports are owned by users. Neutron\nalso has no such feature today, and the queue count is set on the QEMU\nside (libvirt XML), not in neutron/OVS, so nova changes are needed anyway.\nI\u0027d like to keep this to flavor/image and leave per-port as a follow-up.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c435d5e78404bd6baa96248ccc26b9770b12614f","unresolved":true,"context_lines":[{"line_number":62,"context_line":"They only take effect when multiqueue is enabled. Behaviour is unchanged when"},{"line_number":63,"context_line":"neither is set. The names follow the existing prototype; a name such as"},{"line_number":64,"context_line":"``hw:vif_multiqueue_count``, pairing with ``hw:vif_multiqueue_enabled``, is"},{"line_number":65,"context_line":"open to review feedback."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"When multiqueue is enabled, the number of queue pairs for each virtio"},{"line_number":68,"context_line":"interface (kernel vhost and vhost-user) becomes::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"6a5b5027_b9038465","line":65,"in_reply_to":"eae870e2_02a62793","updated":"2026-10-15 14:53:58.000000000","message":"We discussed this during PTG and we agreed with minimum start approach which supports per-nic queue numbers in flavors, which is applied to all of the nics attached to an instance, and explore per-port customization when neutron actually supports that extension.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":71,"context_line":"                 requested queue count,       # new, if set"},{"line_number":72,"context_line":"                 [libvirt] max_queues)        # existing host limit"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"If both flavor and image set a value, the smaller one is used: the flavor"},{"line_number":75,"context_line":"acts as an operator-defined ceiling and the image can only lower it. Letting"},{"line_number":76,"context_line":"the flavor always win would silently ignore the image, and raising"},{"line_number":77,"context_line":"``FlavorImageConflict`` would be needlessly strict for a value where lower is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bc4d9fdf_cf1576af","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":61},"updated":"2026-10-12 10:39:29.000000000","message":"no if both are set and they are not the saem value our convention is to make that a hard error and raise an image flavor conflict excption\n\nthe other conventio whe had in the past but rarely use now is for the flavor to take precendce since operator set values in the flavor should alwasy win over end user selected values in the image.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":71,"context_line":"                 requested queue count,       # new, if set"},{"line_number":72,"context_line":"                 [libvirt] max_queues)        # existing host limit"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"If both flavor and image set a value, the smaller one is used: the flavor"},{"line_number":75,"context_line":"acts as an operator-defined ceiling and the image can only lower it. Letting"},{"line_number":76,"context_line":"the flavor always win would silently ignore the image, and raising"},{"line_number":77,"context_line":"``FlavorImageConflict`` would be needlessly strict for a value where lower is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"4c17a874_05d18644","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":61},"in_reply_to":"bc4d9fdf_cf1576af","updated":"2026-10-13 16:37:12.000000000","message":"Done, now raises FlavorImageConflict.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":80,"context_line":"When ``max_queues`` is unset or larger, the guest receives exactly the"},{"line_number":81,"context_line":"requested number of queues."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The API rejects with ``400 Bad Request`` on create, rebuild and resize, using"},{"line_number":84,"context_line":"the existing flavor/image validation helpers, if either value is not a"},{"line_number":85,"context_line":"positive integer, or if the flavor value is larger than the flavor vCPU"},{"line_number":86,"context_line":"count, which is always a configuration error. An image value larger than the"},{"line_number":87,"context_line":"vCPU count is not rejected, since images are shared across flavors of"},{"line_number":88,"context_line":"different sizes; it is capped by the vCPU count as shown above."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"8ed1ec64_a93f2f37","line":86,"range":{"start_line":83,"start_character":0,"end_line":86,"end_character":46},"updated":"2026-10-12 10:39:29.000000000","message":"this wont work.\n\nserver create and inteface atatch are both async as is rebuild or reseize\n\nwe cant know waht is on the selected host at the api instead the instnace action will just fail.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":80,"context_line":"When ``max_queues`` is unset or larger, the guest receives exactly the"},{"line_number":81,"context_line":"requested number of queues."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The API rejects with ``400 Bad Request`` on create, rebuild and resize, using"},{"line_number":84,"context_line":"the existing flavor/image validation helpers, if either value is not a"},{"line_number":85,"context_line":"positive integer, or if the flavor value is larger than the flavor vCPU"},{"line_number":86,"context_line":"count, which is always a configuration error. An image value larger than the"},{"line_number":87,"context_line":"vCPU count is not rejected, since images are shared across flavors of"},{"line_number":88,"context_line":"different sizes; it is capped by the vCPU count as shown above."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"653985b0_90a79e03","line":86,"range":{"start_line":83,"start_character":0,"end_line":86,"end_character":46},"in_reply_to":"8ed1ec64_a93f2f37","updated":"2026-10-13 16:37:12.000000000","message":"Done, the host limit is now checked on the compute node and the operation fails instead of capping.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":88,"context_line":"different sizes; it is capped by the vCPU count as shown above."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"No scheduling changes are needed: any host supporting multiqueue today can"},{"line_number":91,"context_line":"configure an arbitrary queue count, so there is no host capability to"},{"line_number":92,"context_line":"schedule on. Not-yet-upgraded compute nodes are discussed in"},{"line_number":93,"context_line":"`Upgrade impact`_ and `Alternatives`_. Move operations behave as today: the"},{"line_number":94,"context_line":"count is recomputed from the (new) flavor whenever the guest XML is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dbfc7d39_f83d8531","line":91,"updated":"2026-10-12 10:39:29.000000000","message":"that not entirly ture there is a kernel limit in the vhost kernel module and dpdk has a limti was well but its in the high 100s (512? 1024?) of queue so in practice you are very unlikely to hit it.\n\ncertenlly for any seiblve values in the 4-32 queue range.\n\nthis is why the config option originally existed on 3.x kernels it was 8 i belivie it was bump","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":88,"context_line":"different sizes; it is capped by the vCPU count as shown above."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"No scheduling changes are needed: any host supporting multiqueue today can"},{"line_number":91,"context_line":"configure an arbitrary queue count, so there is no host capability to"},{"line_number":92,"context_line":"schedule on. Not-yet-upgraded compute nodes are discussed in"},{"line_number":93,"context_line":"`Upgrade impact`_ and `Alternatives`_. Move operations behave as today: the"},{"line_number":94,"context_line":"count is recomputed from the (new) flavor whenever the guest XML is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ebd98799_363838fe","line":91,"in_reply_to":"dbfc7d39_f83d8531","updated":"2026-10-13 16:37:12.000000000","message":"Done, reworded.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* **Check the minimum compute service version in the API** and reject"},{"line_number":112,"context_line":"  requests until all compute nodes are upgraded. This blocks the feature for"},{"line_number":113,"context_line":"  the whole duration of the upgrade."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Since the failure mode on an old compute node is simply today\u0027s behaviour,"},{"line_number":116,"context_line":"neither seems necessary."}],"source_content_type":"text/x-rst","patch_set":2,"id":"a828a4b7_73973efa","line":113,"updated":"2026-10-12 10:39:29.000000000","message":"ya i think this is what we would actully want\n\nthis is our nomal approch as it is never accpable tot boot a vm with a feature that is request in the flavor if the host cannot support it.\n\nsoe either we need the trait whic in this case is proably not needed long term\nor we just defer the fucntionaltiy untile the cloud is fully upgraded and i think in this case that is the prefereed option.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* **Check the minimum compute service version in the API** and reject"},{"line_number":112,"context_line":"  requests until all compute nodes are upgraded. This blocks the feature for"},{"line_number":113,"context_line":"  the whole duration of the upgrade."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Since the failure mode on an old compute node is simply today\u0027s behaviour,"},{"line_number":116,"context_line":"neither seems necessary."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7e50b2fe_8fba44bd","line":113,"in_reply_to":"a828a4b7_73973efa","updated":"2026-10-13 16:37:12.000000000","message":"Done, went with the minimum compute service version check (409 until all computes are upgraded, as for the mixed CPU policy).","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":113,"context_line":"  the whole duration of the upgrade."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Since the failure mode on an old compute node is simply today\u0027s behaviour,"},{"line_number":116,"context_line":"neither seems necessary."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Data model impact"},{"line_number":119,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f4d81f4e_48a9449e","line":116,"updated":"2026-10-12 10:39:29.000000000","message":"no that is a very sever bug. nova never boot a vm if a requested/coifnigured feature is not supproted on a host.\n\nthat is part of our contract you either get what you asked for or the vm end up in error with a no valid host.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":113,"context_line":"  the whole duration of the upgrade."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Since the failure mode on an old compute node is simply today\u0027s behaviour,"},{"line_number":116,"context_line":"neither seems necessary."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Data model impact"},{"line_number":119,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"15ec7157_29af4339","line":116,"in_reply_to":"f4d81f4e_48a9449e","updated":"2026-10-13 16:37:12.000000000","message":"Done, see the reply on #113.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb60582bec50545596dae0f6b66ec1b9174c220d","unresolved":true,"context_lines":[{"line_number":166,"context_line":"--------------"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"During a rolling upgrade, an instance may land on a not-yet-upgraded compute,"},{"line_number":169,"context_line":"which ignores the new keys and configures one queue per vCPU as today. The"},{"line_number":170,"context_line":"requested count is applied the next time the guest XML is regenerated on an"},{"line_number":171,"context_line":"upgraded node (hard reboot, resize, cold migration). This is noted in the"},{"line_number":172,"context_line":"release note."}],"source_content_type":"text/x-rst","patch_set":2,"id":"098e28b5_4a7876a8","line":169,"updated":"2026-10-12 10:39:29.000000000","message":"so that by itslef is a blocker for the spec to be accpeted","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":38924,"name":"YushoYamaguchi","display_name":"YushoYamaguchi","email":"ys-yamaguchi@kddi.com","username":"YushoYamaguchi"},"change_message_id":"e61d89cf02499a7c3d77ddae5be2e9f13f6f2100","unresolved":true,"context_lines":[{"line_number":166,"context_line":"--------------"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"During a rolling upgrade, an instance may land on a not-yet-upgraded compute,"},{"line_number":169,"context_line":"which ignores the new keys and configures one queue per vCPU as today. The"},{"line_number":170,"context_line":"requested count is applied the next time the guest XML is regenerated on an"},{"line_number":171,"context_line":"upgraded node (hard reboot, resize, cold migration). This is noted in the"},{"line_number":172,"context_line":"release note."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3cf7bd87_3a8113db","line":169,"in_reply_to":"098e28b5_4a7876a8","updated":"2026-10-13 16:37:12.000000000","message":"Done, see the reply on #113.","commit_id":"4161db9cbd9754115ccc87672fef15b64a041273"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1aa075675ff4ae765f010caf530f2373a7cb501f","unresolved":true,"context_lines":[{"line_number":96,"context_line":"in practice the host limit only matters when an operator has set"},{"line_number":97,"context_line":"``max_queues`` lower than the requested count."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Because the host limit is only known on the compute node, it is checked"},{"line_number":100,"context_line":"there. If the requested count exceeds the host limit, the libvirt driver"},{"line_number":101,"context_line":"raises an error instead of capping the value. The operation fails on the"},{"line_number":102,"context_line":"compute node and the error is recorded in the instance action; on boot, the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"560c5b6e_365841b4","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":56},"updated":"2026-10-15 12:06:27.000000000","message":"I wonder if we should report this through placement and schedule an instance to the host which actually supports the limit ? IMHO this rescheduling approach is too fragile and may not really guarantee how the instance goes.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c435d5e78404bd6baa96248ccc26b9770b12614f","unresolved":true,"context_lines":[{"line_number":96,"context_line":"in practice the host limit only matters when an operator has set"},{"line_number":97,"context_line":"``max_queues`` lower than the requested count."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Because the host limit is only known on the compute node, it is checked"},{"line_number":100,"context_line":"there. If the requested count exceeds the host limit, the libvirt driver"},{"line_number":101,"context_line":"raises an error instead of capping the value. The operation fails on the"},{"line_number":102,"context_line":"compute node and the error is recorded in the instance action; on boot, the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"77f8dfa3_69b764e1","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":56},"in_reply_to":"11f5c1e3_5303f688","updated":"2026-10-15 14:53:58.000000000","message":"During the discussion at PTG Dan suggested we may rather use min(config value, flavor value) to follow the existing semantics.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8f3cc40655ebf2b8239ae43381e87894d00a46a8","unresolved":true,"context_lines":[{"line_number":96,"context_line":"in practice the host limit only matters when an operator has set"},{"line_number":97,"context_line":"``max_queues`` lower than the requested count."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Because the host limit is only known on the compute node, it is checked"},{"line_number":100,"context_line":"there. If the requested count exceeds the host limit, the libvirt driver"},{"line_number":101,"context_line":"raises an error instead of capping the value. The operation fails on the"},{"line_number":102,"context_line":"compute node and the error is recorded in the instance action; on boot, the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5da81223_5be834c1","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":56},"in_reply_to":"560c5b6e_365841b4","updated":"2026-10-15 12:12:17.000000000","message":"Quantity can be reflected in only inventory but this is meant to be a metadata-ish, non-consumable numbers, while traits doesn\u0027t allow us to record numbers to be compared. So there might not be a good solution to achieve this.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0fc5bfa231b0632d7ee54b78d7ad49dd4e97e11d","unresolved":true,"context_lines":[{"line_number":96,"context_line":"in practice the host limit only matters when an operator has set"},{"line_number":97,"context_line":"``max_queues`` lower than the requested count."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Because the host limit is only known on the compute node, it is checked"},{"line_number":100,"context_line":"there. If the requested count exceeds the host limit, the libvirt driver"},{"line_number":101,"context_line":"raises an error instead of capping the value. The operation fails on the"},{"line_number":102,"context_line":"compute node and the error is recorded in the instance action; on boot, the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"11f5c1e3_5303f688","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":56},"in_reply_to":"5da81223_5be834c1","updated":"2026-10-15 12:34:28.000000000","message":"Sean told me that there is a machanism to do filtering based on capability, which was added to support address bits. Maybe you can follow that pattern ?\n\nhttps://github.com/openstack/nova/commit/1038a633870b24b2409205cc3c5fe066442dd49f","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1aa075675ff4ae765f010caf530f2373a7cb501f","unresolved":true,"context_lines":[{"line_number":100,"context_line":"there. If the requested count exceeds the host limit, the libvirt driver"},{"line_number":101,"context_line":"raises an error instead of capping the value. The operation fails on the"},{"line_number":102,"context_line":"compute node and the error is recorded in the instance action; on boot, the"},{"line_number":103,"context_line":"existing reschedule mechanism applies. This matches the existing behaviour"},{"line_number":104,"context_line":"for other requested guest features: the instance either gets what was"},{"line_number":105,"context_line":"requested or the operation fails."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Move operations"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6a535b2b_e9538b05","line":104,"range":{"start_line":103,"start_character":39,"end_line":104,"end_character":34},"updated":"2026-10-15 12:06:27.000000000","message":"Could you share some examples (in the comment) which results in the same behavior. We have last-resort guards but I think the first preference is to filter out such hosts during scheduling.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1aa075675ff4ae765f010caf530f2373a7cb501f","unresolved":true,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"A not-yet-upgraded compute node would ignore the new keys and configure one"},{"line_number":186,"context_line":"queue per vCPU, which would boot the instance without the requested feature."},{"line_number":187,"context_line":"To prevent this, the compute service version is bumped, and the API rejects"},{"line_number":188,"context_line":"create, rebuild and resize requests that set a queue count with ``409"},{"line_number":189,"context_line":"Conflict`` until the minimum compute service version across the deployment"},{"line_number":190,"context_line":"indicates that all compute nodes are upgraded. The feature therefore becomes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6ddb25a0_e28ff1d1","line":187,"range":{"start_line":187,"start_character":17,"end_line":187,"end_character":54},"updated":"2026-10-15 12:06:27.000000000","message":"I think this isn\u0027t the correct way to resolve feature availability and you should expose this feature through capabilities of the compute service.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"81f0ac606a0b94aba07193c304cd7465014933ce","unresolved":true,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"A not-yet-upgraded compute node would ignore the new keys and configure one"},{"line_number":186,"context_line":"queue per vCPU, which would boot the instance without the requested feature."},{"line_number":187,"context_line":"To prevent this, the compute service version is bumped, and the API rejects"},{"line_number":188,"context_line":"create, rebuild and resize requests that set a queue count with ``409"},{"line_number":189,"context_line":"Conflict`` until the minimum compute service version across the deployment"},{"line_number":190,"context_line":"indicates that all compute nodes are upgraded. The feature therefore becomes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"89930c81_acd1a7ef","line":187,"range":{"start_line":187,"start_character":17,"end_line":187,"end_character":54},"in_reply_to":"6ddb25a0_e28ff1d1","updated":"2026-10-15 13:28:33.000000000","message":"this is important so that an instance with explicit queue number request may not land in drivers which doesn\u0027t support it.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d4de666386c0183b44a268101b9c365dde0a17a9","unresolved":true,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"A not-yet-upgraded compute node would ignore the new keys and configure one"},{"line_number":186,"context_line":"queue per vCPU, which would boot the instance without the requested feature."},{"line_number":187,"context_line":"To prevent this, the compute service version is bumped, and the API rejects"},{"line_number":188,"context_line":"create, rebuild and resize requests that set a queue count with ``409"},{"line_number":189,"context_line":"Conflict`` until the minimum compute service version across the deployment"},{"line_number":190,"context_line":"indicates that all compute nodes are upgraded. The feature therefore becomes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d96c7721_0aa4ab75","line":187,"range":{"start_line":187,"start_character":17,"end_line":187,"end_character":54},"in_reply_to":"89930c81_acd1a7ef","updated":"2026-10-15 13:42:02.000000000","message":"Hmm I noticed hw_vif_multiqueue_enabled doesn\u0027t require a specific trait although it\u0027s supported only by libvirt driver... Maybe this needs some input from cores.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c435d5e78404bd6baa96248ccc26b9770b12614f","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"A not-yet-upgraded compute node would ignore the new keys and configure one"},{"line_number":186,"context_line":"queue per vCPU, which would boot the instance without the requested feature."},{"line_number":187,"context_line":"To prevent this, the compute service version is bumped, and the API rejects"},{"line_number":188,"context_line":"create, rebuild and resize requests that set a queue count with ``409"},{"line_number":189,"context_line":"Conflict`` until the minimum compute service version across the deployment"},{"line_number":190,"context_line":"indicates that all compute nodes are upgraded. The feature therefore becomes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"60007c62_daf3ca65","line":187,"range":{"start_line":187,"start_character":17,"end_line":187,"end_character":54},"in_reply_to":"d96c7721_0aa4ab75","updated":"2026-10-15 14:53:58.000000000","message":"During the PTG dan suggested this is a preferred approach and we don\u0027t want to use traits to represent features dependent solely on nova-compute version.\nSo I\u0027ll close my comment here.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1aa075675ff4ae765f010caf530f2373a7cb501f","unresolved":true,"context_lines":[{"line_number":216,"context_line":"* Flavor/image resolution in ``nova.virt.hardware`` and API validation,"},{"line_number":217,"context_line":"  including the ``FlavorImageConflict`` check."},{"line_number":218,"context_line":"* Compute service version bump and minimum version check in the API."},{"line_number":219,"context_line":"* Use the value in the libvirt VIF driver, failing when it exceeds the host"},{"line_number":220,"context_line":"  limit."},{"line_number":221,"context_line":"* Documentation and release note."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ec50e76d_d749f4fe","line":220,"range":{"start_line":219,"start_character":0,"end_line":220,"end_character":8},"updated":"2026-10-15 12:06:27.000000000","message":"In addition to failing at instance creation, we need a validation in the driver initialization to catch the case where `[libvirt] max_queues` has been changed and is now less than requested queues in any of the instances created in that host.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1aa075675ff4ae765f010caf530f2373a7cb501f","unresolved":true,"context_lines":[{"line_number":218,"context_line":"* Compute service version bump and minimum version check in the API."},{"line_number":219,"context_line":"* Use the value in the libvirt VIF driver, failing when it exceeds the host"},{"line_number":220,"context_line":"  limit."},{"line_number":221,"context_line":"* Documentation and release note."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Dependencies"},{"line_number":224,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"f9772889_a5125ff5","line":221,"updated":"2026-10-15 12:06:27.000000000","message":"You may also have to update metadef in glance once the feature is implemented in nova.","commit_id":"ae4ff87d09f009352df17bad7e8dbe4ba0f10810"}]}
