)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"927f69e70393c3e556df0b963a5863f43463ef66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c2b2dbbb_b4a43088","updated":"2024-01-09 22:40:26.000000000","message":"I\u0027ve ported this patch to our downstream Antelope to test it out on a real HW together with https://gerrit.mcp.mirantis.com/c/packaging/sources/nova/+/189719\n\nIn the lab, one of computes has a single Nvidia A100 card that we configured to SR-IOV/MIG mode, partitioned to 5 MIGs of 2 different mdev types (3+2), using latest Nvidia AIE drivers (535.129.03)\n\nAltogether this worked fine-ish:\n- flavor with 2 gpus of 2 different types works immediately, 2 mdevs are passed into qemu, instance sees 2 nvidia PCI devices\n- flavor with 2 identical vGPUs has some problems due to one of scheduler filters (see comment below), but could be worked around by actually adding compute to aggregate with \u0027group_policy\u0027 metadata\n- multi-create works (openstack server create --min --max) too, with single-gpu and dial-gpu flavors.","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"57a6b50fe5071c4914bdc782a9a8d4b359bf4b1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"37d68e43_cab9d4d4","updated":"2024-01-18 13:33:55.000000000","message":"Working on it now","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a364bfb3b90137c558340115a66d5f003ca07af0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dd57a4f4_3178acc8","updated":"2024-01-19 15:09:38.000000000","message":"i have not reviewed the code because i do not agree with the recomendation for how to support this usecase.","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"ad62e0ea52159a5e7cba8fca978bc14b1d86f550","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b0179693_1ef69eae","in_reply_to":"c2b2dbbb_b4a43088","updated":"2024-01-09 22:48:03.000000000","message":"examples of flavor extraspecs used:\n\n- first vgpu type: `resources:CUSTOM_MIG_1G_5GB\u003d\u00271\u0027`\n- second vgpu type: `resources:CUSTOM_MIG_2G_10GB\u003d\u00271\u0027`\n- 2 vgpus of different types: `resources:CUSTOM_MIG_1G_5GB\u003d\u00271\u0027, resources:CUSTOM_MIG_2G_10GB\u003d\u00271\u0027`\n- 2 vgpus of the same type: `group_policy\u003d\u0027none\u0027, resources1:CUSTOM_MIG_1G_5GB\u003d\u00271\u0027, resources2:CUSTOM_MIG_1G_5GB\u003d\u00271\u0027`  - since we are in MIG mode, all resource providers have at most 1 item of any vgpu, so using \u0027none\u0027 or \u0027isolate\u0027 makes no difference, they will be from different resource providers anyway.","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"05003d07bb097a358bd63a438aab35552b6922d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"71a7423c_4413b115","updated":"2024-01-19 11:30:34.000000000","message":"couple of questions inline","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8f8eb2805b1ac86f65aa71ae5e430489a1563f18","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"34247e1a_b949f5af","updated":"2024-03-11 14:57:36.000000000","message":"recheck nova-ceph-multistore same story","commit_id":"bbbfeb566e433379b10961fb2ec221788c96872c"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"11af03458f5a2c40a8970afe176d269ca6e9c1a5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"6abddbaa_0870d1cd","updated":"2026-02-19 15:12:07.000000000","message":"Overall, the patch looks correct in its approach and is well tested. The intent is clear, and the refactoring is minimal and well scoped.\n\nI’m leaving a small -1 mainly to highlight the comments below. My primary concern is around the documentation (see inline comment): I found it difficult to fully understand the current situation, as it appears to be somewhat ambiguous and has evolved over time due to changes in the driver behavior.\n\nThe remaining comments are more minor and mostly related to style or syntax.","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d850cf72f247749728907aeb299085a4acc4e186","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"4c3391d7_1449586c","updated":"2026-02-19 15:28:03.000000000","message":"i just responed to rene\u0027s comment rather then doing a fully code review","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b02decfcc2a6fd2a775c4b6120e337f7e6913c43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"8a0ccdcb_a13b4286","updated":"2026-03-04 15:28:43.000000000","message":"OK to me","commit_id":"b192e80627e8d6c4f39b1e05a9bbc6f90db57234"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c034bb513c1cbe66f50e15571fbffb18b712e3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"3bdd93ed_42600777","updated":"2026-03-06 00:30:55.000000000","message":"This looks OK as far as I can tell and uggla and gibi are +1/+2. I think we should have bug number and link in the release note though.","commit_id":"b192e80627e8d6c4f39b1e05a9bbc6f90db57234"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6f526565c2a958d25269f8c8d6ab9bf1b084700e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fd6d80ff_29ab1d49","updated":"2026-03-10 23:49:39.000000000","message":"Update looks good, thanks 🙂","commit_id":"55a36f8f6a04388cfe5e845c7cd30d7c41cb4b66"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0f25ccfc0172f86435db6cc7cc7b5b07f35e1fc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ce98b480_1b635a21","updated":"2026-03-10 13:38:10.000000000","message":"recheck unrelated resize functional failure on cover job","commit_id":"55a36f8f6a04388cfe5e845c7cd30d7c41cb4b66"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e654c4af5e9d10e93d19f43da5d51fefbf38a86c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"8c296ab9_a0d1f086","updated":"2026-03-10 16:05:45.000000000","message":"still looks good to me","commit_id":"55a36f8f6a04388cfe5e845c7cd30d7c41cb4b66"}],"doc/source/admin/virtual-gpu.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":118,"context_line":"We have an open bug report `bug 1778563`_ explaining that the nvidia driver"},{"line_number":119,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU)."},{"line_number":120,"context_line":"Now, by the 26.0.0 Zed release, you can ask for spreading the vGPUs between"},{"line_number":121,"context_line":"multiple GPU types by using a specific extraspec in the flavor that will be"},{"line_number":122,"context_line":"mandatory."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1fd55215_32872876","line":121,"range":{"start_line":121,"start_character":0,"end_line":121,"end_character":18},"updated":"2022-06-23 16:28:30.000000000","message":"isn\u0027t it spreading between multiple physical GPUs? I.e. if I have two pGPUs both configured with the same type I can still ask for one vGPU from each of those pGPU.","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"We have an open bug report `bug 1778563`_ explaining that the nvidia driver"},{"line_number":119,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU)."},{"line_number":120,"context_line":"Now, by the 26.0.0 Zed release, you can ask for spreading the vGPUs between"},{"line_number":121,"context_line":"multiple GPU types by using a specific extraspec in the flavor that will be"},{"line_number":122,"context_line":"mandatory."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":2,"id":"24d41c10_2a3f20c5","line":121,"range":{"start_line":121,"start_character":0,"end_line":121,"end_character":18},"in_reply_to":"1fd55215_32872876","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":118,"context_line":"We have an open bug report `bug 1778563`_ explaining that the nvidia driver"},{"line_number":119,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU)."},{"line_number":120,"context_line":"Now, by the 26.0.0 Zed release, you can ask for spreading the vGPUs between"},{"line_number":121,"context_line":"multiple GPU types by using a specific extraspec in the flavor that will be"},{"line_number":122,"context_line":"mandatory."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. code-block:: console"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"607635ef_82e8aad8","line":122,"range":{"start_line":121,"start_character":63,"end_line":122,"end_character":10},"updated":"2022-06-23 16:28:30.000000000","message":"I\u0027m not fully getting this. What will be mandatory?","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"We have an open bug report `bug 1778563`_ explaining that the nvidia driver"},{"line_number":119,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU)."},{"line_number":120,"context_line":"Now, by the 26.0.0 Zed release, you can ask for spreading the vGPUs between"},{"line_number":121,"context_line":"multiple GPU types by using a specific extraspec in the flavor that will be"},{"line_number":122,"context_line":"mandatory."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":".. code-block:: console"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d20b6249_16e16d4d","line":122,"range":{"start_line":121,"start_character":63,"end_line":122,"end_character":10},"in_reply_to":"607635ef_82e8aad8","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"927f69e70393c3e556df0b963a5863f43463ef66","unresolved":true,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"   $ openstack flavor set vgpu_2 --property \"resources1:VGPU\u003d1\" \\"},{"line_number":127,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":128,"context_line":"                                 --property \"group_policy\u003disolate\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":131,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"}],"source_content_type":"text/x-rst","patch_set":2,"id":"deac5493_96cb2959","line":128,"range":{"start_line":128,"start_character":33,"end_line":128,"end_character":66},"updated":"2024-01-09 22:40:26.000000000","message":"I noticed that this group_policy extra-spec is not playing well with AggregateInstanceExtraSpecsFilter, when enabled it then also requires the host to be in an aggregate with such metadata.","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"   $ openstack flavor set vgpu_2 --property \"resources1:VGPU\u003d1\" \\"},{"line_number":127,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":128,"context_line":"                                 --property \"group_policy\u003disolate\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":131,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"}],"source_content_type":"text/x-rst","patch_set":2,"id":"31cc40b5_a0a5e3a8","line":128,"range":{"start_line":128,"start_character":33,"end_line":128,"end_character":66},"in_reply_to":"deac5493_96cb2959","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":131,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"},{"line_number":132,"context_line":"for each of the groups."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  .. versionchanged:: 26.0.0"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d1f58bfe_85e0af8e","line":132,"range":{"start_line":132,"start_character":22,"end_line":132,"end_character":23},"updated":"2022-06-23 16:28:30.000000000","message":"... which also means asking vGPUs from different pGPUs.","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":131,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"},{"line_number":132,"context_line":"for each of the groups."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  .. versionchanged:: 26.0.0"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"500e9d74_5a264bfb","line":132,"range":{"start_line":132,"start_character":22,"end_line":132,"end_character":23},"in_reply_to":"d1f58bfe_85e0af8e","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":131,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"},{"line_number":132,"context_line":"for each of the groups."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  .. versionchanged:: 26.0.0"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"How to discover a GPU type"}],"source_content_type":"text/x-rst","patch_set":2,"id":"85c9a086_c98ad139","line":134,"updated":"2022-06-23 16:28:30.000000000","message":"I think this tag needs to be used with a text  under it to render properly. \nSo I would move this to the top of the section like:\n  \n\nAsk for more than one vGPU per instance by the flavor\n-----------------------------------------------------\n.. versionchanged:: 26.0.0\n   Requesting multiple vGPUs per instance, from different pGPUs is supported since Zed","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"},{"line_number":132,"context_line":"for each of the groups."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  .. versionchanged:: 26.0.0"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"How to discover a GPU type"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3377763b_b7d92eac","line":134,"in_reply_to":"85c9a086_c98ad139","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":132,"context_line":"for each of the groups."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  .. versionchanged:: 26.0.0"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"How to discover a GPU type"},{"line_number":138,"context_line":"--------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f63259ee_4ce98005","line":135,"updated":"2022-06-23 16:28:30.000000000","message":"I would mention that the group_policy setting is global for the whole instance not just for the vGPUs. So if the instance is using neutron ports with minimum bandwidth or packet rate QoS policies or cyborg accelerators then the group policy settings in the flavor need to consider all these features. See https://docs.openstack.org/nova/latest/admin/ports-with-resource-requests.html#resource-group-policy (I\u0027m not sure cyborg has a similar doc about the effect of the group policy in tree)","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"for each of the groups."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  .. versionchanged:: 26.0.0"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"How to discover a GPU type"},{"line_number":138,"context_line":"--------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fb8ff58_2f9eeaf1","line":135,"in_reply_to":"f63259ee_4ce98005","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"fae93768a09a4d8ad601b301a60022767ee975b7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a364bfb3b90137c558340115a66d5f003ca07af0","unresolved":true,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"   $ openstack flavor set vgpu_2 --property \"resources1:VGPU\u003d1\" \\"},{"line_number":129,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":130,"context_line":"                                 --property \"group_policy\u003disolate\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":133,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"}],"source_content_type":"text/x-rst","patch_set":3,"id":"4512ed51_60e7c18f","line":130,"updated":"2024-01-19 15:09:38.000000000","message":"im borderline -2 on this.\n\ni am not ok wiht recommending that we use \"group_policy\u003disolate\"\n\nfirst this will break have multiple prots with resouces request form teh same resouce provider.\n\ni.e. if you want a vm with 2 VGPU and 2 ovs port with guarneteed bandwith form the same phsnet/tunnel,  then you cant use isolate\n\n\nsecond isolate is the only remaining non namespaces extra spec so with causes issues with both the compute capablity filter and aggreate flavor extra spec fileter.\n\nso -1.999 recuring on documenting this.\n\n\nplease rework this to use either seperate resouce classes for each phsyical gpu or use provider.yaml to apply traits to each and add a required trati to each resouce group.,","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"571815709cd66377e2249b72eda54ec6195e6598","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"   $ openstack flavor set vgpu_2 --property \"resources1:VGPU\u003d1\" \\"},{"line_number":129,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":130,"context_line":"                                 --property \"group_policy\u003disolate\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":133,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ce9a9053_58c56cce","line":130,"in_reply_to":"4512ed51_60e7c18f","updated":"2024-01-19 16:43:43.000000000","message":"I just modified the doc to provide all the options to the operator. TBC, this isn\u0027t particularly handy to provide different traits per GPU as it defeats the idea to have the same type but fair point, you can judge.","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"689eb172b1a23af657a13e510e4dff966cbc760e","unresolved":true,"context_lines":[{"line_number":134,"context_line":"   $ openstack flavor set vgpu_2 --property \"resources1:VGPU\u003d1\" \\"},{"line_number":135,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":136,"context_line":"                                 --property \"group_policy\u003disolate\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":139,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"},{"line_number":140,"context_line":"for each of the groups."}],"source_content_type":"text/x-rst","patch_set":4,"id":"41fee617_26aeb4cf","line":137,"updated":"2024-01-19 17:13:05.000000000","message":"if you really want to keep this version in the doc\nthen you should present the other way first.\n\nthis should be left as a note as an alternative method.\nit shoudl not be the primary or first one listed.","commit_id":"0f9b4e0f0dc4763c942c37e769bf53ef607cf8a8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d14d335666bf9082d75e3dc494b70556d1ce24ba","unresolved":false,"context_lines":[{"line_number":134,"context_line":"   $ openstack flavor set vgpu_2 --property \"resources1:VGPU\u003d1\" \\"},{"line_number":135,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":136,"context_line":"                                 --property \"group_policy\u003disolate\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"By using the ``group_policy`` value to be ``isolate``, that means that you ask"},{"line_number":139,"context_line":"the nova scheduler (and the Placement API) to use different resource providers"},{"line_number":140,"context_line":"for each of the groups."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dc07b1c2_1d4276b6","line":137,"in_reply_to":"41fee617_26aeb4cf","updated":"2025-09-15 14:11:06.000000000","message":"Acknowledged","commit_id":"0f9b4e0f0dc4763c942c37e769bf53ef607cf8a8"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"11af03458f5a2c40a8970afe176d269ca6e9c1a5","unresolved":true,"context_lines":[{"line_number":175,"context_line":"Ask for more than one vGPU per instance by the flavor"},{"line_number":176,"context_line":"-----------------------------------------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":".. versionchanged:: 29.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU). In"}],"source_content_type":"text/x-rst","patch_set":10,"id":"4041b442_bff2c800","line":178,"range":{"start_line":178,"start_character":20,"end_line":178,"end_character":26},"updated":"2026-02-19 15:12:07.000000000","message":"This needs to be upgraded: 33.0.0 \n(Gazpacho)","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e0cb1649e215a41fda7a3ed88bf10a16a558ca","unresolved":false,"context_lines":[{"line_number":175,"context_line":"Ask for more than one vGPU per instance by the flavor"},{"line_number":176,"context_line":"-----------------------------------------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":".. versionchanged:: 29.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU). In"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ac470a27_f7ac9fdf","line":178,"range":{"start_line":178,"start_character":20,"end_line":178,"end_character":26},"in_reply_to":"4041b442_bff2c800","updated":"2026-02-23 08:54:49.000000000","message":"Done","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"11af03458f5a2c40a8970afe176d269ca6e9c1a5","unresolved":true,"context_lines":[{"line_number":178,"context_line":".. versionchanged:: 29.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU). In"},{"line_number":182,"context_line":"order to alleviate this problem, this is mandatory to require in the flavor to"},{"line_number":183,"context_line":"have all the vGPUs to be spread between multiple physical PCI devices."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"cc0adc59_9fc10265","line":181,"updated":"2026-02-19 15:12:07.000000000","message":"Based on your recent comment in the documentation — “So I guess NVIDIA fixed that meanwhile and it probably depends on the mdev types” — it looks like the behavior may indeed vary depending on the mdev type and the driver variant in use.\n\nThis seems similar to what we observe with the variant driver, where support for multiple vGPUs per instance depends on the underlying mdev configuration.\n\n- It would probably be good to reflect this nuance in the documentation, as the limitation is no longer strictly global but conditional.\n\n- In particular, it may be worth explicitly documenting that the purpose of this work is to enable the use of multiple vGPUs by segregating them across different resource providers, so that they can be placed on distinct physical GPUs when required.","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d850cf72f247749728907aeb299085a4acc4e186","unresolved":true,"context_lines":[{"line_number":178,"context_line":".. versionchanged:: 29.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU). In"},{"line_number":182,"context_line":"order to alleviate this problem, this is mandatory to require in the flavor to"},{"line_number":183,"context_line":"have all the vGPUs to be spread between multiple physical PCI devices."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"f1aef008_57ff38bc","line":181,"in_reply_to":"cc0adc59_9fc10265","updated":"2026-02-19 15:28:03.000000000","message":"yes this was partly a limitatoi f the hardware and driver stack but you can now mix diffent gpu types on teh same card and have diffeng gpu times in teh same vm\n\nnova does not suprpot mixign gpu type on the same card but we can supprot it at teh vm level conce this currently limiation is resovled.\n\nhttps://docs.nvidia.com/ai-enterprise/release-7/7.4/infra-software/vgpu/features.html#heterogeneous-vgpu\nhttps://docs.nvidia.com/ai-enterprise/release-7/7.4/infra-software/vgpu/features.html#multi-vgpu\nhttps://docs.nvidia.com/vgpu/latest/grid-vgpu-release-notes-generic-linux-kvm/index.html#multiple-vgpu-support-vgpus\n\nthere are a bunch of toplogy requriement for how the mig isntnace need to be created since the order matters and that on a per device basis so that not somethign nvoa will ever automatie.\n\nin the context fo this doc we coudl refer to https://docs.nvidia.com/vgpu/latest/grid-vgpu-release-notes-generic-linux-kvm/index.html#multiple-vgpu-support\nbut this is very endor spcific so we proably should just say read the vendor specific docs","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e0cb1649e215a41fda7a3ed88bf10a16a558ca","unresolved":false,"context_lines":[{"line_number":178,"context_line":".. versionchanged:: 29.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per physical GPU). In"},{"line_number":182,"context_line":"order to alleviate this problem, this is mandatory to require in the flavor to"},{"line_number":183,"context_line":"have all the vGPUs to be spread between multiple physical PCI devices."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"5699353e_fdd70389","line":181,"in_reply_to":"f1aef008_57ff38bc","updated":"2026-02-23 08:54:49.000000000","message":"Done","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f3967b837cae8fbd7bb22d2e826b3cd0f16b9792","unresolved":true,"context_lines":[{"line_number":178,"context_line":".. versionchanged:: 33.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per GPU resource - which "},{"line_number":182,"context_line":"can be a physical GPU or a virtual function, see nvidia docs for more details). "},{"line_number":183,"context_line":"In order to alleviate this problem, this is mandatory to require in the flavor"},{"line_number":184,"context_line":"to have all the vGPUs to be spread between multiple GPU resource providers."},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"adf2e6d5_63a1da52","line":182,"range":{"start_line":181,"start_character":0,"end_line":182,"end_character":80},"updated":"2026-02-23 09:14:54.000000000","message":"trailing whitespaces","commit_id":"b48c0d55f30f88ee71acb7dac5594803f685a417"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"959bd139aefd5a330a4967e33b7faf9ef768c414","unresolved":false,"context_lines":[{"line_number":178,"context_line":".. versionchanged:: 33.0.0"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"We have an open bug report `bug 1758086`_ explaining that the nvidia driver"},{"line_number":181,"context_line":"doesn\u0027t support more than one vGPU per instance (and per GPU resource - which "},{"line_number":182,"context_line":"can be a physical GPU or a virtual function, see nvidia docs for more details). "},{"line_number":183,"context_line":"In order to alleviate this problem, this is mandatory to require in the flavor"},{"line_number":184,"context_line":"to have all the vGPUs to be spread between multiple GPU resource providers."},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"bd571696_7eb46899","line":182,"range":{"start_line":181,"start_character":0,"end_line":182,"end_character":80},"in_reply_to":"adf2e6d5_63a1da52","updated":"2026-02-24 09:21:18.000000000","message":"doh","commit_id":"b48c0d55f30f88ee71acb7dac5594803f685a417"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c034bb513c1cbe66f50e15571fbffb18b712e3d","unresolved":true,"context_lines":[{"line_number":191,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"With SR-IOV GPUs (you may need to refer to nVidia documentation to know the"},{"line_number":195,"context_line":"distinction), this will work without requiring further attributes as every"},{"line_number":196,"context_line":"single VGPU Resource Provider only provides a single VGPU resource."},{"line_number":197,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f406b66_fc0d417b","line":194,"range":{"start_line":194,"start_character":43,"end_line":194,"end_character":49},"updated":"2026-03-06 00:30:55.000000000","message":"I noticed this is \"nVidia\" and on L180 it is \"nvidia\" but I see there is not one specific format in this doc in general 🙂","commit_id":"b192e80627e8d6c4f39b1e05a9bbc6f90db57234"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"de911ad8cdb877d4675d1646077d6298dab70658","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                 --property \"resources2:VGPU\u003d1\" \\"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"With SR-IOV GPUs (you may need to refer to nVidia documentation to know the"},{"line_number":195,"context_line":"distinction), this will work without requiring further attributes as every"},{"line_number":196,"context_line":"single VGPU Resource Provider only provides a single VGPU resource."},{"line_number":197,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"f9ae7793_a8785ffd","line":194,"range":{"start_line":194,"start_character":43,"end_line":194,"end_character":49},"in_reply_to":"5f406b66_fc0d417b","updated":"2026-03-10 10:28:07.000000000","message":"Done","commit_id":"b192e80627e8d6c4f39b1e05a9bbc6f90db57234"}],"nova/tests/functional/libvirt/test_vgpu.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":311,"context_line":"        # Let\u0027s try to ask for two vGPUs with each of them be in a different"},{"line_number":312,"context_line":"        # physical GPU."},{"line_number":313,"context_line":"        extra_spec \u003d {\"resources1:VGPU\": \"1\", \"resources2:VGPU\": \"1\","},{"line_number":314,"context_line":"                      \"group_policy\": \"isolate\"}"},{"line_number":315,"context_line":"        flavor \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":316,"context_line":"        self._create_server("},{"line_number":317,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ed89eb2f_6d74ab24","line":314,"range":{"start_line":314,"start_character":22,"end_line":314,"end_character":47},"updated":"2022-06-14 14:15:43.000000000","message":"Please extend the documentation to describe that if multiple GPU is requested this way then group_policy will be mandatory as well.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"571815709cd66377e2249b72eda54ec6195e6598","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        # Let\u0027s try to ask for two vGPUs with each of them be in a different"},{"line_number":312,"context_line":"        # physical GPU."},{"line_number":313,"context_line":"        extra_spec \u003d {\"resources1:VGPU\": \"1\", \"resources2:VGPU\": \"1\","},{"line_number":314,"context_line":"                      \"group_policy\": \"isolate\"}"},{"line_number":315,"context_line":"        flavor \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":316,"context_line":"        self._create_server("},{"line_number":317,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"afd720d4_0fb9d0a5","line":314,"range":{"start_line":314,"start_character":22,"end_line":314,"end_character":47},"in_reply_to":"ed89eb2f_6d74ab24","updated":"2024-01-19 16:43:43.000000000","message":"Done","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":317,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":318,"context_line":"            flavor_id\u003dflavor, networks\u003d\u0027auto\u0027, host\u003dself.compute1.host)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # FIXME(sbauza): Unfortunately, we only accept one allocation per"},{"line_number":321,"context_line":"        # instance by the libvirt driver as you can see in _allocate_mdevs()."},{"line_number":322,"context_line":"        # So, eventually, we only have one vGPU for this instance."},{"line_number":323,"context_line":"        self.assert_mdev_usage(self.compute1, expected_amount\u003d2)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"27a12eee_5dd5e7e3","line":322,"range":{"start_line":320,"start_character":0,"end_line":322,"end_character":66},"updated":"2022-06-14 14:15:43.000000000","message":"drop this as you are fixed it :)","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"69a5689408eda8287b9f3b2e27b042dc6bd80459","unresolved":true,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # FIXME(sbauza): Unfortunately, we only accept one allocation per"},{"line_number":321,"context_line":"        # instance by the libvirt driver as you can see in _allocate_mdevs()."},{"line_number":322,"context_line":"        # So, eventually, we only have one vGPU for this instance."},{"line_number":323,"context_line":"        self.assert_mdev_usage(self.compute1, expected_amount\u003d2)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"eb351b22_6a12534a","line":322,"updated":"2022-06-14 14:00:10.000000000","message":"of course, I\u0027ll remove the sentence above...","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":318,"context_line":"            flavor_id\u003dflavor, networks\u003d\u0027auto\u0027, host\u003dself.compute1.host)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # FIXME(sbauza): Unfortunately, we only accept one allocation per"},{"line_number":321,"context_line":"        # instance by the libvirt driver as you can see in _allocate_mdevs()."},{"line_number":322,"context_line":"        # So, eventually, we only have one vGPU for this instance."},{"line_number":323,"context_line":"        self.assert_mdev_usage(self.compute1, expected_amount\u003d2)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fba8587e_289c1614","line":322,"range":{"start_line":320,"start_character":0,"end_line":322,"end_character":66},"in_reply_to":"27a12eee_5dd5e7e3","updated":"2022-06-17 13:27:24.000000000","message":"Ack","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # FIXME(sbauza): Unfortunately, we only accept one allocation per"},{"line_number":321,"context_line":"        # instance by the libvirt driver as you can see in _allocate_mdevs()."},{"line_number":322,"context_line":"        # So, eventually, we only have one vGPU for this instance."},{"line_number":323,"context_line":"        self.assert_mdev_usage(self.compute1, expected_amount\u003d2)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"810eac55_58aae22c","line":322,"in_reply_to":"eb351b22_6a12534a","updated":"2022-06-17 13:27:24.000000000","message":"Ack","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":8196,"context_line":"                            That code is supporting Placement API version 1.12"},{"line_number":8197,"context_line":"        \"\"\""},{"line_number":8198,"context_line":"        vgpu_allocations \u003d self._vgpu_allocations(allocations)"},{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"}],"source_content_type":"text/x-python","patch_set":1,"id":"bd699b59_fe427855","line":8200,"range":{"start_line":8199,"start_character":8,"end_line":8200,"end_character":18},"updated":"2022-06-14 14:15:43.000000000","message":"now this is can be dropped as if vgpu_allocations is {} then the whole loop below will be be a noop.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":8196,"context_line":"                            That code is supporting Placement API version 1.12"},{"line_number":8197,"context_line":"        \"\"\""},{"line_number":8198,"context_line":"        vgpu_allocations \u003d self._vgpu_allocations(allocations)"},{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"}],"source_content_type":"text/x-python","patch_set":1,"id":"f235aa82_063a0b94","line":8200,"range":{"start_line":8199,"start_character":8,"end_line":8200,"end_character":18},"in_reply_to":"4ff5bb58_50279b6c","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":true,"context_lines":[{"line_number":8196,"context_line":"                            That code is supporting Placement API version 1.12"},{"line_number":8197,"context_line":"        \"\"\""},{"line_number":8198,"context_line":"        vgpu_allocations \u003d self._vgpu_allocations(allocations)"},{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"}],"source_content_type":"text/x-python","patch_set":1,"id":"4ff5bb58_50279b6c","line":8200,"range":{"start_line":8199,"start_character":8,"end_line":8200,"end_character":18},"in_reply_to":"bd699b59_fe427855","updated":"2022-06-17 13:27:24.000000000","message":"We can, but it will change the returned value if no allocations : an empty list instead of None.\n\nThat would mean changing the UT that verifies it, or adding an else clause for the for loop, which would return None too.\nLooks to me unnecessary changes while here it\u0027s easy to understand why we directly return.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2a6c3b7_fcb7300b","line":8202,"range":{"start_line":8202,"start_character":23,"end_line":8202,"end_character":25},"updated":"2022-06-14 14:15:43.000000000","message":"this now means that if no allocation is given then we return None, but if there was allocation given but we don\u0027t allocated anything then we return []. Do we need this distinction of cases?","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"622125b4_94d96c17","line":8202,"range":{"start_line":8202,"start_character":23,"end_line":8202,"end_character":25},"in_reply_to":"577e2ca4_ceba74f0","updated":"2022-06-23 16:28:30.000000000","message":"So we keep the distinction just to avoid updating UTs? I would go and update the UTs for consistency. :)","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"449cb300_bd42bac0","line":8202,"range":{"start_line":8202,"start_character":23,"end_line":8202,"end_character":25},"in_reply_to":"622125b4_94d96c17","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":true,"context_lines":[{"line_number":8199,"context_line":"        if not vgpu_allocations:"},{"line_number":8200,"context_line":"            return"},{"line_number":8201,"context_line":""},{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"577e2ca4_ceba74f0","line":8202,"range":{"start_line":8202,"start_character":23,"end_line":8202,"end_character":25},"in_reply_to":"c2a6c3b7_fcb7300b","updated":"2022-06-17 13:27:24.000000000","message":"See my comment above.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"},{"line_number":8206,"context_line":""},{"line_number":8207,"context_line":"            try:"},{"line_number":8208,"context_line":"                allocated_rp \u003d self.provider_tree.data(rp_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"404344ce_e415cadf","line":8205,"range":{"start_line":8205,"start_character":59,"end_line":8205,"end_character":62},"updated":"2022-06-14 14:15:43.000000000","message":"is this a similar limitation than the one we just removed? what prevents us to have two different resource classes here? Or is this an assumption of our model that on pGPU RP will only have one RC?","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":true,"context_lines":[{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"},{"line_number":8206,"context_line":""},{"line_number":8207,"context_line":"            try:"},{"line_number":8208,"context_line":"                allocated_rp \u003d self.provider_tree.data(rp_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d16c4fcb_92fb8ca9","line":8205,"range":{"start_line":8205,"start_character":59,"end_line":8205,"end_character":62},"in_reply_to":"404344ce_e415cadf","updated":"2022-06-17 13:27:24.000000000","message":"Excellent point. GPU Resource Providers should only support VGPU inventories (hence the [0] item.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"5eb6d11d34d015ac43495b9505d864b9e1f0aacb","unresolved":true,"context_lines":[{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"},{"line_number":8206,"context_line":""},{"line_number":8207,"context_line":"            try:"},{"line_number":8208,"context_line":"                allocated_rp \u003d self.provider_tree.data(rp_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b0da4cb1_b629d970","line":8205,"range":{"start_line":8205,"start_character":59,"end_line":8205,"end_character":62},"in_reply_to":"920377f8_7d030521","updated":"2024-01-08 18:44:45.000000000","message":"good question.\n\nI can only attest for nvidia GPUs, where regardless of MIG or time-sliced vGPU, a single PCI device (PF for time-sliced, VF for MIG) can only have a single type of mdev created on it - while empty, it \"supports\" multiple types, but once a single mdev is created on it, it is only possible to create mdevs of the same type on it going further (if capacity allows for more), as reported capacity for other supported mdev types drops to zero on this device.\n\nTheoretically some other types of devices/vendors/drivers may behave differently... though I have seen none :-)","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8c2e9c356c6fb2e994e19b86768689c5e386b49a","unresolved":false,"context_lines":[{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"},{"line_number":8206,"context_line":""},{"line_number":8207,"context_line":"            try:"},{"line_number":8208,"context_line":"                allocated_rp \u003d self.provider_tree.data(rp_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"abf0d1d7_f6b155bd","line":8205,"range":{"start_line":8205,"start_character":59,"end_line":8205,"end_character":62},"in_reply_to":"b0da4cb1_b629d970","updated":"2024-01-18 15:04:50.000000000","message":"Done","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":true,"context_lines":[{"line_number":8202,"context_line":"        chosen_mdevs \u003d []"},{"line_number":8203,"context_line":"        for rp_uuid, alloc in vgpu_allocations.items():"},{"line_number":8204,"context_line":"            # We only have one allocation with a supported resource class"},{"line_number":8205,"context_line":"            vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"},{"line_number":8206,"context_line":""},{"line_number":8207,"context_line":"            try:"},{"line_number":8208,"context_line":"                allocated_rp \u003d self.provider_tree.data(rp_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"920377f8_7d030521","line":8205,"range":{"start_line":8205,"start_character":59,"end_line":8205,"end_character":62},"in_reply_to":"d16c4fcb_92fb8ca9","updated":"2022-06-23 16:28:30.000000000","message":"If we go with the generic mdev feature where the user defines the resource class in the nova config do we still have the assumption that a single physical mdev (pgpu) supports only a single type/resource class?","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":8210,"context_line":"                # The provider doesn\u0027t exist, return a better understandable"},{"line_number":8211,"context_line":"                # exception"},{"line_number":8212,"context_line":"                raise exception.ComputeResourcesUnavailable("},{"line_number":8213,"context_line":"                    reason\u003d\u0027mdev-capable resource is not available\u0027)"},{"line_number":8214,"context_line":"            rp_name \u003d allocated_rp.name"},{"line_number":8215,"context_line":"            # There can be multiple roots, we need to find the root name"},{"line_number":8216,"context_line":"            # to guess the physical device name"}],"source_content_type":"text/x-python","patch_set":1,"id":"fc5daad0_f9d9397b","line":8213,"updated":"2022-06-14 14:15:43.000000000","message":"I would mention in the exception text what RC and what RP uuid was missing","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":false,"context_lines":[{"line_number":8210,"context_line":"                # The provider doesn\u0027t exist, return a better understandable"},{"line_number":8211,"context_line":"                # exception"},{"line_number":8212,"context_line":"                raise exception.ComputeResourcesUnavailable("},{"line_number":8213,"context_line":"                    reason\u003d\u0027mdev-capable resource is not available\u0027)"},{"line_number":8214,"context_line":"            rp_name \u003d allocated_rp.name"},{"line_number":8215,"context_line":"            # There can be multiple roots, we need to find the root name"},{"line_number":8216,"context_line":"            # to guess the physical device name"}],"source_content_type":"text/x-python","patch_set":1,"id":"c07ba1f9_d01bf029","line":8213,"in_reply_to":"fc5daad0_f9d9397b","updated":"2022-06-17 13:27:24.000000000","message":"Ack","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91eeb8d174c29b2f6f0aceabbeb8ce2a9242826a","unresolved":true,"context_lines":[{"line_number":8218,"context_line":"            for root in roots:"},{"line_number":8219,"context_line":"                if rp_name.startswith(root.name + \u0027_\u0027):"},{"line_number":8220,"context_line":"                    # The RP name convention is :"},{"line_number":8221,"context_line":"                    #    root_name + \u0027_\u0027 + parent_device"},{"line_number":8222,"context_line":"                    parent_device \u003d rp_name[len(root.name) + 1:]"},{"line_number":8223,"context_line":"                    break"},{"line_number":8224,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"af6ac63b_160a30c9","line":8221,"range":{"start_line":8221,"start_character":25,"end_line":8221,"end_character":35},"updated":"2022-06-14 14:15:43.000000000","message":"isn\u0027t it simply CONF.host  in all the cases as vGPU is directly under the compute RP? This feels like a lot of code instead of parent_device \u003d rp_name[len(CONF.host) + 1:]","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"93084bb8d6867cee66f33fe765cc2d31fe816536","unresolved":false,"context_lines":[{"line_number":8218,"context_line":"            for root in roots:"},{"line_number":8219,"context_line":"                if rp_name.startswith(root.name + \u0027_\u0027):"},{"line_number":8220,"context_line":"                    # The RP name convention is :"},{"line_number":8221,"context_line":"                    #    root_name + \u0027_\u0027 + parent_device"},{"line_number":8222,"context_line":"                    parent_device \u003d rp_name[len(root.name) + 1:]"},{"line_number":8223,"context_line":"                    break"},{"line_number":8224,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9d30c903_3fca3e1a","line":8221,"range":{"start_line":8221,"start_character":25,"end_line":8221,"end_character":35},"in_reply_to":"15f84cb4_7feb13ec","updated":"2022-06-23 16:28:30.000000000","message":"It is feels YANGI to me. But meh.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ef197edf9e240a65575816d171b5784964ec95b","unresolved":true,"context_lines":[{"line_number":8218,"context_line":"            for root in roots:"},{"line_number":8219,"context_line":"                if rp_name.startswith(root.name + \u0027_\u0027):"},{"line_number":8220,"context_line":"                    # The RP name convention is :"},{"line_number":8221,"context_line":"                    #    root_name + \u0027_\u0027 + parent_device"},{"line_number":8222,"context_line":"                    parent_device \u003d rp_name[len(root.name) + 1:]"},{"line_number":8223,"context_line":"                    break"},{"line_number":8224,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"15f84cb4_7feb13ec","line":8221,"range":{"start_line":8221,"start_character":25,"end_line":8221,"end_character":35},"in_reply_to":"af6ac63b_160a30c9","updated":"2022-06-17 13:27:24.000000000","message":"Agreed, but I prefered to be conservative when I did this in Rocky IIRC (we could reshape again with GPU RPs be children on a NUMA RP, for example)\nLet\u0027s not change it by now if you don\u0027t mind.","commit_id":"273249e90ed4196647bacd8f0730a3dfe66f5968"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"05003d07bb097a358bd63a438aab35552b6922d0","unresolved":true,"context_lines":[{"line_number":8555,"context_line":"            # There can be multiple roots, we need to find the root name"},{"line_number":8556,"context_line":"            # to guess the physical device name"},{"line_number":8557,"context_line":"            roots \u003d list(self.provider_tree.roots)"},{"line_number":8558,"context_line":"            for root in roots:"},{"line_number":8559,"context_line":"                # FIXME(sbauza): The functional reshape test assumes that we"},{"line_number":8560,"context_line":"                # could run _allocate_mdevs() against non-nested RPs but this"},{"line_number":8561,"context_line":"                # is impossible as all inventories have been reshaped *before"}],"source_content_type":"text/x-python","patch_set":3,"id":"5eb9d59d_a83141d3","line":8558,"updated":"2024-01-19 11:30:34.000000000","message":"I\u0027m not sure why we iterate all the roots. Can we just go up to the parent RP via allocated_rp.parent_uuid and the look up that RP from the provider_tree?","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b78a96be0111ed7ca5531086a75d6ac161000df1","unresolved":true,"context_lines":[{"line_number":8555,"context_line":"            # There can be multiple roots, we need to find the root name"},{"line_number":8556,"context_line":"            # to guess the physical device name"},{"line_number":8557,"context_line":"            roots \u003d list(self.provider_tree.roots)"},{"line_number":8558,"context_line":"            for root in roots:"},{"line_number":8559,"context_line":"                # FIXME(sbauza): The functional reshape test assumes that we"},{"line_number":8560,"context_line":"                # could run _allocate_mdevs() against non-nested RPs but this"},{"line_number":8561,"context_line":"                # is impossible as all inventories have been reshaped *before"}],"source_content_type":"text/x-python","patch_set":3,"id":"99141e16_4b85ee8c","line":8558,"in_reply_to":"5eb9d59d_a83141d3","updated":"2024-01-19 14:58:48.000000000","message":"The reason is purely tech debt : we still do support reshapes (after 4 years) so we continue to say \"heh, we could have allocated_rp.parent_uuid that is None\" (see L8566).\n\nI didn\u0027t wanted to cleanup and remove the reshape support as it would be a large feature but yeah, we should do it.","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"571815709cd66377e2249b72eda54ec6195e6598","unresolved":false,"context_lines":[{"line_number":8555,"context_line":"            # There can be multiple roots, we need to find the root name"},{"line_number":8556,"context_line":"            # to guess the physical device name"},{"line_number":8557,"context_line":"            roots \u003d list(self.provider_tree.roots)"},{"line_number":8558,"context_line":"            for root in roots:"},{"line_number":8559,"context_line":"                # FIXME(sbauza): The functional reshape test assumes that we"},{"line_number":8560,"context_line":"                # could run _allocate_mdevs() against non-nested RPs but this"},{"line_number":8561,"context_line":"                # is impossible as all inventories have been reshaped *before"}],"source_content_type":"text/x-python","patch_set":3,"id":"467442f6_bf4adde1","line":8558,"in_reply_to":"99141e16_4b85ee8c","updated":"2024-01-19 16:43:43.000000000","message":"As agreed on IRC, I\u0027ll do a followup by removing the non-nested support here and changing the functest so we could see.","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"05003d07bb097a358bd63a438aab35552b6922d0","unresolved":true,"context_lines":[{"line_number":8556,"context_line":"            # to guess the physical device name"},{"line_number":8557,"context_line":"            roots \u003d list(self.provider_tree.roots)"},{"line_number":8558,"context_line":"            for root in roots:"},{"line_number":8559,"context_line":"                # FIXME(sbauza): The functional reshape test assumes that we"},{"line_number":8560,"context_line":"                # could run _allocate_mdevs() against non-nested RPs but this"},{"line_number":8561,"context_line":"                # is impossible as all inventories have been reshaped *before"},{"line_number":8562,"context_line":"                # now* since it\u0027s done on init_host() (when the compute"},{"line_number":8563,"context_line":"                # restarts or whatever else calls it). That said, since fixing"},{"line_number":8564,"context_line":"                # the functional test isn\u0027t easy yet, let\u0027s assume we still"},{"line_number":8565,"context_line":"                # support a non-nested RP for now."},{"line_number":8566,"context_line":"                if allocated_rp.parent_uuid is None:"},{"line_number":8567,"context_line":"                    # We are on a root RP"},{"line_number":8568,"context_line":"                    parent_device \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"863605bd_aa4ea8c2","line":8565,"range":{"start_line":8559,"start_character":0,"end_line":8565,"end_character":50},"updated":"2024-01-19 11:30:34.000000000","message":"can we have some tracker not to forget to clean up the functional tests?","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b78a96be0111ed7ca5531086a75d6ac161000df1","unresolved":true,"context_lines":[{"line_number":8556,"context_line":"            # to guess the physical device name"},{"line_number":8557,"context_line":"            roots \u003d list(self.provider_tree.roots)"},{"line_number":8558,"context_line":"            for root in roots:"},{"line_number":8559,"context_line":"                # FIXME(sbauza): The functional reshape test assumes that we"},{"line_number":8560,"context_line":"                # could run _allocate_mdevs() against non-nested RPs but this"},{"line_number":8561,"context_line":"                # is impossible as all inventories have been reshaped *before"},{"line_number":8562,"context_line":"                # now* since it\u0027s done on init_host() (when the compute"},{"line_number":8563,"context_line":"                # restarts or whatever else calls it). That said, since fixing"},{"line_number":8564,"context_line":"                # the functional test isn\u0027t easy yet, let\u0027s assume we still"},{"line_number":8565,"context_line":"                # support a non-nested RP for now."},{"line_number":8566,"context_line":"                if allocated_rp.parent_uuid is None:"},{"line_number":8567,"context_line":"                    # We are on a root RP"},{"line_number":8568,"context_line":"                    parent_device \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"a8a9f98a_95b5f498","line":8565,"range":{"start_line":8559,"start_character":0,"end_line":8565,"end_character":50},"in_reply_to":"863605bd_aa4ea8c2","updated":"2024-01-19 14:58:48.000000000","message":"The tracker should be to delete VGPU reshape support, which is obviously impossible now (unless you directly upgrade from Stein to Caracal) but that\u0027s a specless blueprint. I\u0027ll write it down, not sure when we could do it.","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"571815709cd66377e2249b72eda54ec6195e6598","unresolved":false,"context_lines":[{"line_number":8556,"context_line":"            # to guess the physical device name"},{"line_number":8557,"context_line":"            roots \u003d list(self.provider_tree.roots)"},{"line_number":8558,"context_line":"            for root in roots:"},{"line_number":8559,"context_line":"                # FIXME(sbauza): The functional reshape test assumes that we"},{"line_number":8560,"context_line":"                # could run _allocate_mdevs() against non-nested RPs but this"},{"line_number":8561,"context_line":"                # is impossible as all inventories have been reshaped *before"},{"line_number":8562,"context_line":"                # now* since it\u0027s done on init_host() (when the compute"},{"line_number":8563,"context_line":"                # restarts or whatever else calls it). That said, since fixing"},{"line_number":8564,"context_line":"                # the functional test isn\u0027t easy yet, let\u0027s assume we still"},{"line_number":8565,"context_line":"                # support a non-nested RP for now."},{"line_number":8566,"context_line":"                if allocated_rp.parent_uuid is None:"},{"line_number":8567,"context_line":"                    # We are on a root RP"},{"line_number":8568,"context_line":"                    parent_device \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"194ea3b5_b2600bdd","line":8565,"range":{"start_line":8559,"start_character":0,"end_line":8565,"end_character":50},"in_reply_to":"a8a9f98a_95b5f498","updated":"2024-01-19 16:43:43.000000000","message":"The blueprint tracker is here https://blueprints.launchpad.net/nova/+spec/drop-vgpu-reshape-support","commit_id":"2de95a770f326ee7f0c9e077a376887bd2891072"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"11af03458f5a2c40a8970afe176d269ca6e9c1a5","unresolved":true,"context_lines":[{"line_number":9089,"context_line":"                # restarts or whatever else calls it). That said, since fixing"},{"line_number":9090,"context_line":"                # the functional test isn\u0027t easy yet, let\u0027s assume we still"},{"line_number":9091,"context_line":"                # support a non-nested RP for now."},{"line_number":9092,"context_line":"                if allocated_rp.parent_uuid is None:"},{"line_number":9093,"context_line":"                    # We are on a root RP"},{"line_number":9094,"context_line":"                    parent_device \u003d None"},{"line_number":9095,"context_line":"                    break"},{"line_number":9096,"context_line":"                if rp_name.startswith(root.name + \u0027_\u0027):"},{"line_number":9097,"context_line":"                    # The RP name convention is :"},{"line_number":9098,"context_line":"                    #    root_name + \u0027_\u0027 + parent_device"}],"source_content_type":"text/x-python","patch_set":10,"id":"a294b19f_6b00416b","line":9095,"range":{"start_line":9092,"start_character":16,"end_line":9095,"end_character":25},"updated":"2026-02-19 15:12:07.000000000","message":"This branch does not depend on root. So I think it can goes out of the loop.\n```\nif allocated_rp.parent_uuid is None:\n      parent_device \u003d None\n  else:\n      for root in roots:\n          if rp_name.startswith(root.name + \u0027_\u0027):\n              parent_device \u003d rp_name[len(root.name) + 1:]\n              break\n      else:\n          raise ...\n```\n\nBut I agree, this is mostly a matter of style.","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"91aef66cf89117f52c10d4f5db5d92fc3435f983","unresolved":false,"context_lines":[{"line_number":9089,"context_line":"                # restarts or whatever else calls it). That said, since fixing"},{"line_number":9090,"context_line":"                # the functional test isn\u0027t easy yet, let\u0027s assume we still"},{"line_number":9091,"context_line":"                # support a non-nested RP for now."},{"line_number":9092,"context_line":"                if allocated_rp.parent_uuid is None:"},{"line_number":9093,"context_line":"                    # We are on a root RP"},{"line_number":9094,"context_line":"                    parent_device \u003d None"},{"line_number":9095,"context_line":"                    break"},{"line_number":9096,"context_line":"                if rp_name.startswith(root.name + \u0027_\u0027):"},{"line_number":9097,"context_line":"                    # The RP name convention is :"},{"line_number":9098,"context_line":"                    #    root_name + \u0027_\u0027 + parent_device"}],"source_content_type":"text/x-python","patch_set":10,"id":"65e1cc0a_a1e1f64d","line":9095,"range":{"start_line":9092,"start_character":16,"end_line":9095,"end_character":25},"in_reply_to":"3b4baf2d_0f2cfc3d","updated":"2026-03-04 18:42:25.000000000","message":"Acknowledged","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e0cb1649e215a41fda7a3ed88bf10a16a558ca","unresolved":true,"context_lines":[{"line_number":9089,"context_line":"                # restarts or whatever else calls it). That said, since fixing"},{"line_number":9090,"context_line":"                # the functional test isn\u0027t easy yet, let\u0027s assume we still"},{"line_number":9091,"context_line":"                # support a non-nested RP for now."},{"line_number":9092,"context_line":"                if allocated_rp.parent_uuid is None:"},{"line_number":9093,"context_line":"                    # We are on a root RP"},{"line_number":9094,"context_line":"                    parent_device \u003d None"},{"line_number":9095,"context_line":"                    break"},{"line_number":9096,"context_line":"                if rp_name.startswith(root.name + \u0027_\u0027):"},{"line_number":9097,"context_line":"                    # The RP name convention is :"},{"line_number":9098,"context_line":"                    #    root_name + \u0027_\u0027 + parent_device"}],"source_content_type":"text/x-python","patch_set":10,"id":"3b4baf2d_0f2cfc3d","line":9095,"range":{"start_line":9092,"start_character":16,"end_line":9095,"end_character":25},"in_reply_to":"a294b19f_6b00416b","updated":"2026-02-23 08:54:49.000000000","message":"I don\u0027t want to break more the move into smaller chunks, so I\u0027d want to keep it as is.","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"11af03458f5a2c40a8970afe176d269ca6e9c1a5","unresolved":true,"context_lines":[{"line_number":9121,"context_line":"                    chosen_mdev \u003d mdevs_available.pop()"},{"line_number":9122,"context_line":"                else:"},{"line_number":9123,"context_line":"                    LOG.debug(\u0027No available mdevs where found. \u0027"},{"line_number":9124,"context_line":"                              \u0027Creating an new one...\u0027)"},{"line_number":9125,"context_line":"                    chosen_mdev \u003d self._create_new_mediated_device("},{"line_number":9126,"context_line":"                        parent_device)"},{"line_number":9127,"context_line":"                if not chosen_mdev:"}],"source_content_type":"text/x-python","patch_set":10,"id":"852d7b75_7720c50a","line":9124,"range":{"start_line":9124,"start_character":40,"end_line":9124,"end_character":42},"updated":"2026-02-19 15:12:07.000000000","message":"nit: s/an/a/","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"51e0cb1649e215a41fda7a3ed88bf10a16a558ca","unresolved":false,"context_lines":[{"line_number":9121,"context_line":"                    chosen_mdev \u003d mdevs_available.pop()"},{"line_number":9122,"context_line":"                else:"},{"line_number":9123,"context_line":"                    LOG.debug(\u0027No available mdevs where found. \u0027"},{"line_number":9124,"context_line":"                              \u0027Creating an new one...\u0027)"},{"line_number":9125,"context_line":"                    chosen_mdev \u003d self._create_new_mediated_device("},{"line_number":9126,"context_line":"                        parent_device)"},{"line_number":9127,"context_line":"                if not chosen_mdev:"}],"source_content_type":"text/x-python","patch_set":10,"id":"97beac82_28686206","line":9124,"range":{"start_line":9124,"start_character":40,"end_line":9124,"end_character":42},"in_reply_to":"852d7b75_7720c50a","updated":"2026-02-23 08:54:49.000000000","message":"was just a move, but I can fix this grammar nit for sure.","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"11af03458f5a2c40a8970afe176d269ca6e9c1a5","unresolved":false,"context_lines":[{"line_number":9122,"context_line":"                else:"},{"line_number":9123,"context_line":"                    LOG.debug(\u0027No available mdevs where found. \u0027"},{"line_number":9124,"context_line":"                              \u0027Creating an new one...\u0027)"},{"line_number":9125,"context_line":"                    chosen_mdev \u003d self._create_new_mediated_device("},{"line_number":9126,"context_line":"                        parent_device)"},{"line_number":9127,"context_line":"                if not chosen_mdev:"},{"line_number":9128,"context_line":"                    # If we can\u0027t find devices having available VGPUs, just"}],"source_content_type":"text/x-python","patch_set":10,"id":"db3667c7_55359da6","line":9125,"range":{"start_line":9125,"start_character":39,"end_line":9125,"end_character":66},"updated":"2026-02-19 15:12:07.000000000","message":"Peronal comment: This return None if it fails","commit_id":"a70b9a11921362fddf915591d72061f4183e6362"}],"releasenotes/notes/bug-1758086-e9d147380d149789.yaml":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0c034bb513c1cbe66f50e15571fbffb18b712e3d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1fb7dd6b_79969d6b","line":7,"updated":"2026-03-06 00:30:55.000000000","message":"I think we should reference the bug number and provide a link with this, no?","commit_id":"b192e80627e8d6c4f39b1e05a9bbc6f90db57234"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"de911ad8cdb877d4675d1646077d6298dab70658","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fa48ca33_f1cf11ae","line":7,"in_reply_to":"1fb7dd6b_79969d6b","updated":"2026-03-10 10:28:07.000000000","message":"Done","commit_id":"b192e80627e8d6c4f39b1e05a9bbc6f90db57234"}]}
