)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3f092499_416a4fb2","updated":"2025-01-14 13:32:55.000000000","message":"We might want to have a feature release notes added too.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bdb8a6e6_23e41c28","in_reply_to":"3f092499_416a4fb2","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e419cfd34f39d904cc3871236e5797c32aa7f659","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5eb18bbc_9d8c56b6","updated":"2025-02-04 20:14:08.000000000","message":"as noted on the previous patch the chages to stats.py are missing.\n\ni would have to check the spec but i also dont see any other schduler supprot.\n\ni.e. traits\n\nso at present since we do not have a compute service bump, schduler filter support or traits you can properly schedule instances that request this feature via the pci alias.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ae8f3b401dbf3484f1dd2a728cc36c3b02771d82","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e1e4124f_c126cbf8","updated":"2025-02-13 14:13:54.000000000","message":"This looks OK to me.","commit_id":"1c4817aeaabd7d67b073c1cc735291895adca540"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8dc9cf7321fbc92d288cfb83e526fb535cac4dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5f865cf8_fc229c38","updated":"2025-02-14 09:06:39.000000000","message":"+2 but I\u0027d like some pastebin evidence of a real hardware usage of that series.\n@rene.ribaud@gmail.com can you reply to my comment with a pastebin that will show me with logs and bash commands that we eventually get the domain XML be updated correctly ? (ideally with negative testing as well)","commit_id":"ff572e2bdbb4d7bbbef576217041de482ba48a4b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"34245b0907681eae68fe53ed09954df0320db9cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"90233130_92edd556","updated":"2025-02-20 15:44:14.000000000","message":"nothing really different here, still +2","commit_id":"ca80bbd0c2f35d5ba2ed2a5fb1110b59db9bcb6f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"3085193f_1120601c","updated":"2025-02-25 18:30:30.000000000","message":"+1 there are some testing gaps and some nits\n\nim not sure if this is enough to justify a respin or if we shoudl just have one followup patch to address all the comments?\n\nthere is nothing functionally wrong but a few style/tech debt itmes that we shoudl adresses IMO","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f20ba06327d6e4f5e1433106d6404b388097e93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c268e6e3_cfb410b2","updated":"2025-02-26 09:37:38.000000000","message":"Given the close Feature Freeze, I don\u0027t want to hold this series due to the existing comments. Maybe we would need to have a follow-up patch for those comments so that\u0027s why I\u0027m leaving @smooney@redhat.com to +W this change.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d0e419ec28b118cf96773cef6db8695b5bf3b5f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"badbaa97_96b11aa3","updated":"2025-02-25 15:36:39.000000000","message":"Looks good to me now.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0bc9ef4ada9fb0df730d77a50ebb2563600df31e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"0ca35c87_73bf8e7f","updated":"2025-02-26 11:35:11.000000000","message":"if rené is happy to work on a followup for the testing then ill +w this later today.\n\nthe follow up does not have to be ready or even push later today i just want to see them ack/nack the feedback before proceeding","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eddc402144b20ec6ea3b5fc3ed52d3411ae699aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"88634bac_4ad91f8d","updated":"2025-02-27 09:26:09.000000000","message":"recheck just requeued after its parent rechecked","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e02f6e33a8014e937e4f6843a172398ff633a14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"95d6f61b_49672cc8","updated":"2025-02-28 09:48:24.000000000","message":"recheck multi store job failed with guest kernel panic https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_5c4/938405/12/check/nova-ceph-multistore/5c4ccbc/testr_results.html","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"634dfd03cfc56a6b17b30dbba49ad1183dc4f637","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5fedc65a_1b1ec8f2","in_reply_to":"0ca35c87_73bf8e7f","updated":"2025-02-26 16:56:19.000000000","message":"Hi Sean,\n\nI\u0027m currently finalizing the migration patch, I think I will have look tomorrow.\nLooking at this patch right now is not safe as I may introduce pitfalls because I\u0027m a bit tired.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"90a7ca806d0a6dfdfacdc847e7df880c7f3b91ab","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"29339bee_bb59acf5","in_reply_to":"5fedc65a_1b1ec8f2","updated":"2025-02-27 02:15:21.000000000","message":"given you have acknolaged that there are more work to be done im prepared to start merging the first 2 patches.\n\ni dont think we will merge teh live migraton patches at this point but we can do the remainign testing work as part of the live migration series next cycle.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b34dc94578c45e3dcbdbac6896f21399e953e8ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"3d8a972e_9f1c69ae","updated":"2025-03-03 11:37:37.000000000","message":"just a rebase still looks OK. Also based on https://etherpad.opendev.org/p/nova-2025.1-status we have freeze exception until Tuesday","commit_id":"03915cd59d5ead425ac11f63bfe84c8c2b0dc293"}],"doc/source/admin/pci-passthrough.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":231,"context_line":"  Users must specify whether the PCI device is managed by libvirt to allow"},{"line_number":232,"context_line":"  detachment from the host and assignment to the guest, or vice versa."},{"line_number":233,"context_line":"  The managed mode of a device depends on the specific device and the support"},{"line_number":234,"context_line":"  provided by its driver."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"  - ``managed\u003d\u0027yes\u0027`` means that nova will use libvirt to detach the device"},{"line_number":237,"context_line":"    from the host before attaching it to the guest and re-attach it to the host"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6cee9933_b5449827","line":234,"updated":"2025-01-14 13:32:55.000000000","message":"Describe that if the tag is not specified then the defaulted to \u0027yes\u0027 which is the backward compatible value.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":231,"context_line":"  Users must specify whether the PCI device is managed by libvirt to allow"},{"line_number":232,"context_line":"  detachment from the host and assignment to the guest, or vice versa."},{"line_number":233,"context_line":"  The managed mode of a device depends on the specific device and the support"},{"line_number":234,"context_line":"  provided by its driver."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"  - ``managed\u003d\u0027yes\u0027`` means that nova will use libvirt to detach the device"},{"line_number":237,"context_line":"    from the host before attaching it to the guest and re-attach it to the host"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5ddea69d_9c898dcc","line":234,"in_reply_to":"6cee9933_b5449827","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"  - ``managed\u003d\u0027no\u0027`` means that nova will not request libvirt to detach / attach"},{"line_number":241,"context_line":"    the device from / to the host. In this case nova assumes that the operator"},{"line_number":242,"context_line":"    configured the host in a way that these VFs are not attached to the host."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"  .. important::"},{"line_number":245,"context_line":"     Incorrect configuration of this parameter may result in compute"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c3f511be_8a436613","line":242,"range":{"start_line":242,"start_character":24,"end_line":242,"end_character":77},"updated":"2025-01-14 13:32:55.000000000","message":"based on the spec: that the devices are already\nbound to vfio-pci or the relevant variant driver and are directly usable without any additional operations to enable passthrough to QEMU.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"57218e05cf84d1bd8dad3e47371a5a844b1a0a95","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"  - ``managed\u003d\u0027no\u0027`` means that nova will not request libvirt to detach / attach"},{"line_number":241,"context_line":"    the device from / to the host. In this case nova assumes that the operator"},{"line_number":242,"context_line":"    configured the host in a way that these VFs are not attached to the host."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"  .. important::"},{"line_number":245,"context_line":"     Incorrect configuration of this parameter may result in compute"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8a117d48_9b954057","line":242,"range":{"start_line":242,"start_character":24,"end_line":242,"end_character":77},"in_reply_to":"38ea82a9_726846fb","updated":"2025-02-03 17:56:21.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93b256da52f552e61d3e3dd414b59ff7ed1fbc24","unresolved":true,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"  - ``managed\u003d\u0027no\u0027`` means that nova will not request libvirt to detach / attach"},{"line_number":241,"context_line":"    the device from / to the host. In this case nova assumes that the operator"},{"line_number":242,"context_line":"    configured the host in a way that these VFs are not attached to the host."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"  .. important::"},{"line_number":245,"context_line":"     Incorrect configuration of this parameter may result in compute"}],"source_content_type":"text/x-rst","patch_set":1,"id":"38ea82a9_726846fb","line":242,"range":{"start_line":242,"start_character":24,"end_line":242,"end_character":77},"in_reply_to":"c3f511be_8a436613","updated":"2025-01-14 14:49:53.000000000","message":"correct.\n\nwith managed\u003dno we are explcitly disablig the functionaltiy in libvirt to rebind the device before passing it to qemu.\n\nso that in trun requires that the installer has preconfigured the devices at the host level pior to starting nova-compute\n\nnote that in the manage\u003dyes can its alos valid and in some cases recommend to prebind to vfio-pci to reduce IRQ overhead but that is kind of an edge case.\n\nit used to be our recommendation to always prebind fo flavor based passhtoguh but wither is fine for managed\u003dyes.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":489,"context_line":"SR-IOV devices such as GPUs can be configured to provide VF with various"},{"line_number":490,"context_line":"types of characteristics."},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"If users need to support **multiple types of VF** per compute node, the"},{"line_number":493,"context_line":"following steps are required:"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"- Enable PCI in Placement: This is necessary to track PCI devices with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ab6c2f80_d7b0e49d","line":492,"range":{"start_line":492,"start_character":0,"end_line":492,"end_character":71},"updated":"2025-01-14 13:32:55.000000000","message":"multiple type of VFs while they have the same product and vendor id","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":489,"context_line":"SR-IOV devices such as GPUs can be configured to provide VF with various"},{"line_number":490,"context_line":"types of characteristics."},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"If users need to support **multiple types of VF** per compute node, the"},{"line_number":493,"context_line":"following steps are required:"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"- Enable PCI in Placement: This is necessary to track PCI devices with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"80e4f186_434c7244","line":492,"range":{"start_line":492,"start_character":0,"end_line":492,"end_character":71},"in_reply_to":"ab6c2f80_d7b0e49d","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":498,"context_line":"  a specific VF type and ensure that the VFs existing on the hypervisor are"},{"line_number":499,"context_line":"  matched via the VF\u0027s PCI address."},{"line_number":500,"context_line":"- Specify Type-Specific Flavors: Define flavors with an alias that matches"},{"line_number":501,"context_line":"  the vendor, product, and resource class to ensure proper allocation."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"For example:"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"155fb0e2_0329aaf2","line":501,"range":{"start_line":501,"start_character":6,"end_line":501,"end_character":21},"updated":"2025-01-14 13:32:55.000000000","message":"resource class is enough","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":498,"context_line":"  a specific VF type and ensure that the VFs existing on the hypervisor are"},{"line_number":499,"context_line":"  matched via the VF\u0027s PCI address."},{"line_number":500,"context_line":"- Specify Type-Specific Flavors: Define flavors with an alias that matches"},{"line_number":501,"context_line":"  the vendor, product, and resource class to ensure proper allocation."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"For example:"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"82cf9cb7_74e93745","line":501,"range":{"start_line":501,"start_character":6,"end_line":501,"end_character":21},"in_reply_to":"155fb0e2_0329aaf2","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":498,"context_line":"  a specific VF type and ensure that the VFs existing on the hypervisor are"},{"line_number":499,"context_line":"  matched via the VF\u0027s PCI address."},{"line_number":500,"context_line":"- Specify Type-Specific Flavors: Define flavors with an alias that matches"},{"line_number":501,"context_line":"  the vendor, product, and resource class to ensure proper allocation."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"For example:"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a994c752_cb26da51","line":501,"range":{"start_line":501,"start_character":6,"end_line":501,"end_character":21},"in_reply_to":"82cf9cb7_74e93745","updated":"2025-02-07 09:53:08.000000000","message":"still not fixed.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ebcc21893b7325847e76d255a95abffce5a12b0","unresolved":false,"context_lines":[{"line_number":498,"context_line":"  a specific VF type and ensure that the VFs existing on the hypervisor are"},{"line_number":499,"context_line":"  matched via the VF\u0027s PCI address."},{"line_number":500,"context_line":"- Specify Type-Specific Flavors: Define flavors with an alias that matches"},{"line_number":501,"context_line":"  the vendor, product, and resource class to ensure proper allocation."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"For example:"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2a496ce0_b2adb41c","line":501,"range":{"start_line":501,"start_character":6,"end_line":501,"end_character":21},"in_reply_to":"a994c752_cb26da51","updated":"2025-02-10 15:09:29.000000000","message":"Oops done.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":505,"context_line":".. code-block:: ini"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"   [pci]"},{"line_number":508,"context_line":"   device_spec \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"address\": \"0000:25:00.4\", resource_class: \"CUSTOM_A16_16A\", managed: \"no\" }"},{"line_number":509,"context_line":"   alias \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"device_type\": \"type-VF\", resource_class: \"CUSTOM_A16_16A\", \"name\": \"A16_16A\" }"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Virtual IOMMU support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"29ee0ed5_bed8eaf8","line":508,"updated":"2025-01-14 13:32:55.000000000","message":"add one more spec that has the same vendor and product id but a different address and a different resource class to complete the example","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":505,"context_line":".. code-block:: ini"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"   [pci]"},{"line_number":508,"context_line":"   device_spec \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"address\": \"0000:25:00.4\", resource_class: \"CUSTOM_A16_16A\", managed: \"no\" }"},{"line_number":509,"context_line":"   alias \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"device_type\": \"type-VF\", resource_class: \"CUSTOM_A16_16A\", \"name\": \"A16_16A\" }"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Virtual IOMMU support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e207901e_ecc1eb46","line":508,"in_reply_to":"29ee0ed5_bed8eaf8","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":506,"context_line":""},{"line_number":507,"context_line":"   [pci]"},{"line_number":508,"context_line":"   device_spec \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"address\": \"0000:25:00.4\", resource_class: \"CUSTOM_A16_16A\", managed: \"no\" }"},{"line_number":509,"context_line":"   alias \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"device_type\": \"type-VF\", resource_class: \"CUSTOM_A16_16A\", \"name\": \"A16_16A\" }"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Virtual IOMMU support"},{"line_number":512,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a9514fa2_0c840091","line":509,"range":{"start_line":509,"start_character":13,"end_line":509,"end_character":55},"updated":"2025-01-14 13:32:55.000000000","message":"you can drop it","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":506,"context_line":""},{"line_number":507,"context_line":"   [pci]"},{"line_number":508,"context_line":"   device_spec \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"address\": \"0000:25:00.4\", resource_class: \"CUSTOM_A16_16A\", managed: \"no\" }"},{"line_number":509,"context_line":"   alias \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"device_type\": \"type-VF\", resource_class: \"CUSTOM_A16_16A\", \"name\": \"A16_16A\" }"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"Virtual IOMMU support"},{"line_number":512,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a24d37f_00bec03b","line":509,"range":{"start_line":509,"start_character":13,"end_line":509,"end_character":55},"in_reply_to":"a9514fa2_0c840091","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e419cfd34f39d904cc3871236e5797c32aa7f659","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  .. warning::"},{"line_number":252,"context_line":"     Incorrect configuration of this parameter may result in compute"},{"line_number":253,"context_line":"     node crashes."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Configure ``nova-scheduler``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"518a7214_e13e1905","line":253,"updated":"2025-02-04 20:14:08.000000000","message":"these docs changes should be with the code that adds the config option parsing really.\n\nwhich means the object change patch should perhaps be before teh parsing change.\n\nwe can work with this ordering too its just not where i would have put this specific update.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  .. warning::"},{"line_number":252,"context_line":"     Incorrect configuration of this parameter may result in compute"},{"line_number":253,"context_line":"     node crashes."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Configure ``nova-scheduler``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"61279715_ed1ddeb8","line":253,"in_reply_to":"3acbd539_fb7cd58e","updated":"2025-02-25 18:30:30.000000000","message":"i was saying that i expect the docs to be in the first patch of the two.\n\nnot with the drvier chagne that uses the opetion but with the change that added the persing to the device spec\n\nhttps://review.opendev.org/c/openstack/nova/+/937649/11/nova/pci/devspec.py\n\nthis patch 938405 is not the patch that added the tags to the devspec 937649 was.\n\nwe can treat this as a nit unless this is rebased  to adress other comments.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8dc9cf7321fbc92d288cfb83e526fb535cac4dd","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  .. warning::"},{"line_number":252,"context_line":"     Incorrect configuration of this parameter may result in compute"},{"line_number":253,"context_line":"     node crashes."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Configure ``nova-scheduler``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3acbd539_fb7cd58e","line":253,"in_reply_to":"518a7214_e13e1905","updated":"2025-02-14 09:06:39.000000000","message":"we have this parsing check in the code AFAIK, which specific piece do you think is missing ?","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f20ba06327d6e4f5e1433106d6404b388097e93","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  .. warning::"},{"line_number":252,"context_line":"     Incorrect configuration of this parameter may result in compute"},{"line_number":253,"context_line":"     node crashes."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Configure ``nova-scheduler``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6e62fab9_55b272fc","line":253,"in_reply_to":"61279715_ed1ddeb8","updated":"2025-02-26 09:37:38.000000000","message":"ahah I see your point, but I think that\u0027s a nit indeed, unless the other change is not merged before FF.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":386,"context_line":""},{"line_number":387,"context_line":".. warning::"},{"line_number":388,"context_line":"   Please note that once it is enabled on a given compute host"},{"line_number":389,"context_line":"   **it cannot be disabled there any more**."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"Since nova 26.0.0 (Zed) PCI passthrough device inventories are tracked in"},{"line_number":392,"context_line":"Placement. If a PCI device exists on the hypervisor and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"acadf816_c3173657","line":389,"updated":"2025-02-07 09:53:08.000000000","message":"thanks. This could be a separate patch landed independently of the current feauture work.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ae8f3b401dbf3484f1dd2a728cc36c3b02771d82","unresolved":false,"context_lines":[{"line_number":386,"context_line":""},{"line_number":387,"context_line":".. warning::"},{"line_number":388,"context_line":"   Please note that once it is enabled on a given compute host"},{"line_number":389,"context_line":"   **it cannot be disabled there any more**."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"Since nova 26.0.0 (Zed) PCI passthrough device inventories are tracked in"},{"line_number":392,"context_line":"Placement. If a PCI device exists on the hypervisor and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2a7753e3_7f37d6a3","line":389,"in_reply_to":"99353d38_3cc5ddbb","updated":"2025-02-13 14:13:54.000000000","message":"does not worth the effort to move it. But next time lets keep independent changes in different commits.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ebcc21893b7325847e76d255a95abffce5a12b0","unresolved":true,"context_lines":[{"line_number":386,"context_line":""},{"line_number":387,"context_line":".. warning::"},{"line_number":388,"context_line":"   Please note that once it is enabled on a given compute host"},{"line_number":389,"context_line":"   **it cannot be disabled there any more**."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"Since nova 26.0.0 (Zed) PCI passthrough device inventories are tracked in"},{"line_number":392,"context_line":"Placement. If a PCI device exists on the hypervisor and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"99353d38_3cc5ddbb","line":389,"in_reply_to":"acadf816_c3173657","updated":"2025-02-10 15:09:29.000000000","message":"Would you rather have it in a separate patch ?","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":523,"context_line":".. code-block:: shell"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"  [pci]"},{"line_number":526,"context_line":"  device_spec \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"address\": \"0000:25:00.4\", \"resource_class\": \"CUSTOM_A16_16A\", \"managed\": \"no\" }"},{"line_number":527,"context_line":"  alias \u003d { \"device_type\": \"type-VF\", resource_class: \"CUSTOM_A16_16A\", \"name\": \"A16_16A\" }"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"Virtual IOMMU support"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7b12fcbf_605968ee","line":526,"updated":"2025-02-07 09:53:08.000000000","message":"add one more spec that has the same vendor and product id but a different address and a different resource class to complete the example","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ebcc21893b7325847e76d255a95abffce5a12b0","unresolved":false,"context_lines":[{"line_number":523,"context_line":".. code-block:: shell"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"  [pci]"},{"line_number":526,"context_line":"  device_spec \u003d { \"vendor_id\": \"10de\", \"product_id\": \"25b6\", \"address\": \"0000:25:00.4\", \"resource_class\": \"CUSTOM_A16_16A\", \"managed\": \"no\" }"},{"line_number":527,"context_line":"  alias \u003d { \"device_type\": \"type-VF\", resource_class: \"CUSTOM_A16_16A\", \"name\": \"A16_16A\" }"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"Virtual IOMMU support"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7c787e66_ad5402e5","line":526,"in_reply_to":"7b12fcbf_605968ee","updated":"2025-02-10 15:09:29.000000000","message":"Done","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"For deeper technical details please read the `nova specification. \u003chttps://specs.openstack.org/openstack/nova-specs/specs/zed/approved/pci-device-tracking-in-placement.html\u003e`_"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"Support for multiple types of VFs"},{"line_number":496,"context_line":"---------------------------------"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"SR-IOV devices, such as GPUs, can be configured to provide VFs with various"}],"source_content_type":"text/x-rst","patch_set":12,"id":"462a0a62_240a1fd8","line":495,"updated":"2025-02-25 18:30:30.000000000","message":"this doc update is appropriate to be in this patch because its really documenting how the options added in the the previous patch are used as part fo the new functionality added in this patch.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"}],"nova/conf/pci.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93b256da52f552e61d3e3dd414b59ff7ed1fbc24","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        VFs are not attached to the host."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"       Warning: Incorrect configuration of this parameter may result in compute"},{"line_number":191,"context_line":"       node crashes."},{"line_number":192,"context_line":"    - ``resource_class`` - optional Placement resource class name to be used"},{"line_number":193,"context_line":"      to track the matching PCI devices in Placement when"},{"line_number":194,"context_line":"      [pci]report_in_placement is True."}],"source_content_type":"text/x-python","patch_set":1,"id":"419b8141_75378500","line":191,"updated":"2025-01-14 14:49:53.000000000","message":"again this feel wrong to me because this is not new.\n\nit has always been possibel to crash the host by setting the wrong pci adress in the device spec or due to driver bugs.\n\ni have litrally done it with both intel and melanox nics int he past due to kernel driver buts so i dont think we shoudl eb adding this warning here as it no differnt the the existng bevhiaro this makes the managed flag seeam more dangerous then it actully is.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6ddc0b8206cb1cf377b92d0775d1f5df5e5ebae1","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        VFs are not attached to the host."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"       Warning: Incorrect configuration of this parameter may result in compute"},{"line_number":191,"context_line":"       node crashes."},{"line_number":192,"context_line":"    - ``resource_class`` - optional Placement resource class name to be used"},{"line_number":193,"context_line":"      to track the matching PCI devices in Placement when"},{"line_number":194,"context_line":"      [pci]report_in_placement is True."}],"source_content_type":"text/x-python","patch_set":1,"id":"273aed93_55c21fd7","line":191,"in_reply_to":"233e0b03_56c5b3ce","updated":"2025-02-07 10:31:01.000000000","message":"Maybe we can add that it is more related to a drivers issue.\n\nWarning: Incorrect configuration of this parameter may cause compute node crashes due to an unstable driver or lack of support for the requested mode.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8dc9cf7321fbc92d288cfb83e526fb535cac4dd","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        VFs are not attached to the host."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"       Warning: Incorrect configuration of this parameter may result in compute"},{"line_number":191,"context_line":"       node crashes."},{"line_number":192,"context_line":"    - ``resource_class`` - optional Placement resource class name to be used"},{"line_number":193,"context_line":"      to track the matching PCI devices in Placement when"},{"line_number":194,"context_line":"      [pci]report_in_placement is True."}],"source_content_type":"text/x-python","patch_set":1,"id":"067f9a68_bb8515a1","line":191,"in_reply_to":"273aed93_55c21fd7","updated":"2025-02-14 09:06:39.000000000","message":"Resolving this comment as I think we have now a consensus.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        VFs are not attached to the host."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"       Warning: Incorrect configuration of this parameter may result in compute"},{"line_number":191,"context_line":"       node crashes."},{"line_number":192,"context_line":"    - ``resource_class`` - optional Placement resource class name to be used"},{"line_number":193,"context_line":"      to track the matching PCI devices in Placement when"},{"line_number":194,"context_line":"      [pci]report_in_placement is True."}],"source_content_type":"text/x-python","patch_set":1,"id":"233e0b03_56c5b3ce","line":191,"in_reply_to":"419b8141_75378500","updated":"2025-02-07 09:53:08.000000000","message":"I disagree. I think this is appropriate to add now as now nova has a way (managed\u003dfalse) to avoid the issue.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e419cfd34f39d904cc3871236e5797c32aa7f659","unresolved":true,"context_lines":[{"line_number":176,"context_line":"      available for allocation."},{"line_number":177,"context_line":"    - ``managed`` - Specify if the PCI device is managed by libvirt."},{"line_number":178,"context_line":"      May have boolean-like string values case-insensitive values:"},{"line_number":179,"context_line":"      \"yes\" or \"no\". By default, \"yes\" is assumed for all devices."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"      - ``managed\u003d\u0027yes\u0027`` means that nova will use libvirt to detach the"},{"line_number":182,"context_line":"        device from the host before attaching it to the guest and re-attach"}],"source_content_type":"text/x-python","patch_set":3,"id":"fbefc704_ef3f7111","line":179,"range":{"start_line":179,"start_character":7,"end_line":179,"end_character":19},"updated":"2025-02-04 20:14:08.000000000","message":"by the way i think we tend to prefer true/false over yes/no so shoudl we udpate this to be consitent with removeet_managed and other boolean options?","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e8dc9cf7321fbc92d288cfb83e526fb535cac4dd","unresolved":false,"context_lines":[{"line_number":176,"context_line":"      available for allocation."},{"line_number":177,"context_line":"    - ``managed`` - Specify if the PCI device is managed by libvirt."},{"line_number":178,"context_line":"      May have boolean-like string values case-insensitive values:"},{"line_number":179,"context_line":"      \"yes\" or \"no\". By default, \"yes\" is assumed for all devices."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"      - ``managed\u003d\u0027yes\u0027`` means that nova will use libvirt to detach the"},{"line_number":182,"context_line":"        device from the host before attaching it to the guest and re-attach"}],"source_content_type":"text/x-python","patch_set":3,"id":"fcb85f54_efc97b78","line":179,"range":{"start_line":179,"start_character":7,"end_line":179,"end_character":19},"in_reply_to":"fbefc704_ef3f7111","updated":"2025-02-14 09:06:39.000000000","message":"this is implemented in the series now, resolving that old comment (unless I\u0027m wrong)","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":174,"context_line":"      VPD capability with a card serial number (either on a VF itself on"},{"line_number":175,"context_line":"      its corresponding PF), otherwise they will be ignored and not"},{"line_number":176,"context_line":"      available for allocation."},{"line_number":177,"context_line":"    - ``managed`` - Specify if the PCI device is managed by libvirt."},{"line_number":178,"context_line":"      May have boolean-like string values case-insensitive values:"},{"line_number":179,"context_line":"      \"yes\" or \"no\". By default, \"yes\" is assumed for all devices."},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"2ce9e87f_f40eb4b2","line":177,"updated":"2025-02-25 18:30:30.000000000","message":"nit: again this should have been in the previous patch but its ok.\n\nwe are going to merge the two patches at the same time","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f20ba06327d6e4f5e1433106d6404b388097e93","unresolved":false,"context_lines":[{"line_number":174,"context_line":"      VPD capability with a card serial number (either on a VF itself on"},{"line_number":175,"context_line":"      its corresponding PF), otherwise they will be ignored and not"},{"line_number":176,"context_line":"      available for allocation."},{"line_number":177,"context_line":"    - ``managed`` - Specify if the PCI device is managed by libvirt."},{"line_number":178,"context_line":"      May have boolean-like string values case-insensitive values:"},{"line_number":179,"context_line":"      \"yes\" or \"no\". By default, \"yes\" is assumed for all devices."},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1898aebc_db2198df","line":177,"in_reply_to":"2ce9e87f_f40eb4b2","updated":"2025-02-26 09:37:38.000000000","message":"Acknowledged","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":249,"context_line":"                   \"address\": \"0000:82:00.0\","},{"line_number":250,"context_line":"                   \"resource_class\": \"PGPU\","},{"line_number":251,"context_line":"                   \"traits\": \"HW_GPU_API_VULKAN,my-awesome-gpu\"}"},{"line_number":252,"context_line":"    device_spec \u003d {\"vendor_id\":\"10de\","},{"line_number":253,"context_line":"                   \"product_id\":\"25b6\","},{"line_number":254,"context_line":"                   \"address\": \"0000:25:00.4\","},{"line_number":255,"context_line":"                   \"managed\": \"no\"}"}],"source_content_type":"text/x-python","patch_set":12,"id":"197b4d0c_123c99e2","line":252,"updated":"2025-02-25 18:30:30.000000000","message":"dito","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":458,"context_line":"        self._create_server(flavor_id\u003dflavor_id, networks\u003d\u0027none\u0027)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # ensure the filter was called"},{"line_number":461,"context_line":"        self.assertTrue(self.mock_filter.called)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_create_server_with_VF_and_managed_set_to_no(self):"},{"line_number":464,"context_line":"        \"\"\"Create a server with an SR-IOV VF-type PCI device.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"fd5bd4a9_48fceff3","line":461,"updated":"2025-01-14 13:32:55.000000000","message":"here and below: could you assert that `nova.virt.libvirt.guest.Guest.create` is also called? Otherwise this test can pass without actually asserting the XML values","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"315d633f138185aa21ac8cd124b45c38aa2bbdc9","unresolved":true,"context_lines":[{"line_number":458,"context_line":"        self._create_server(flavor_id\u003dflavor_id, networks\u003d\u0027none\u0027)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # ensure the filter was called"},{"line_number":461,"context_line":"        self.assertTrue(self.mock_filter.called)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_create_server_with_VF_and_managed_set_to_no(self):"},{"line_number":464,"context_line":"        \"\"\"Create a server with an SR-IOV VF-type PCI device.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"83d9b89c_be165c32","line":461,"in_reply_to":"1a38d456_249de798","updated":"2025-02-03 16:52:40.000000000","message":"Oh ok! I understand now. Yes you are right it might pass if it is not called.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"57218e05cf84d1bd8dad3e47371a5a844b1a0a95","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        self._create_server(flavor_id\u003dflavor_id, networks\u003d\u0027none\u0027)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # ensure the filter was called"},{"line_number":461,"context_line":"        self.assertTrue(self.mock_filter.called)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_create_server_with_VF_and_managed_set_to_no(self):"},{"line_number":464,"context_line":"        \"\"\"Create a server with an SR-IOV VF-type PCI device.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"2165891d_c15a31c2","line":461,"in_reply_to":"83d9b89c_be165c32","updated":"2025-02-03 17:56:21.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d43b7bffca8fa164e7c71cc087f26863e87122b8","unresolved":true,"context_lines":[{"line_number":458,"context_line":"        self._create_server(flavor_id\u003dflavor_id, networks\u003d\u0027none\u0027)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # ensure the filter was called"},{"line_number":461,"context_line":"        self.assertTrue(self.mock_filter.called)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_create_server_with_VF_and_managed_set_to_no(self):"},{"line_number":464,"context_line":"        \"\"\"Create a server with an SR-IOV VF-type PCI device.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a38d456_249de798","line":461,"in_reply_to":"9b9076d1_2d7ccd9f","updated":"2025-02-03 15:59:20.000000000","message":"\u003e So, we are sure that nova.virt.libvirt.guest.Guest.create is called\n\nThat is my point. :) We never make sure it is called. We only make sure that if create is called the content of the XML is asserted by the fake, but if the create is never called then that assert is not run. There is a hidden assumption here that create is always called. I would like to make that  explicitly not just an assumption but an assert. So please check if either `nova.virt.libvirt.guest.Guest.create` or `fake_create` is actually called.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":true,"context_lines":[{"line_number":458,"context_line":"        self._create_server(flavor_id\u003dflavor_id, networks\u003d\u0027none\u0027)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # ensure the filter was called"},{"line_number":461,"context_line":"        self.assertTrue(self.mock_filter.called)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def test_create_server_with_VF_and_managed_set_to_no(self):"},{"line_number":464,"context_line":"        \"\"\"Create a server with an SR-IOV VF-type PCI device.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9b9076d1_2d7ccd9f","line":461,"in_reply_to":"fd5bd4a9_48fceff3","updated":"2025-02-03 14:45:50.000000000","message":"Hum, I\u0027m not sure I get your point here.\n\nThe XML values are asserted in the fake_create method.\nFor this purpose, the fake_create method is inserted just before the real nova.virt.libvirt.guest.Guest.create method.\n\nSo, we are sure that nova.virt.libvirt.guest.Guest.create is called, and the XML content is correct.\n\nI\u0027m not sure I would write the original test like this, which is inspired by the other tests in this file.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        # ensure the filter was called"},{"line_number":479,"context_line":"        self.assertTrue(self.mock_filter.called)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_create_server_with_VF_and_managed_set_to_yes(self):"},{"line_number":482,"context_line":"        device_spec \u003d ["},{"line_number":483,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":12,"id":"3b1ec299_8e86c079","line":480,"updated":"2025-02-25 18:30:30.000000000","message":"it would be nice ot have a test that defined the devspec.\ncreate the compute\nassrted the manage flavo is in the db\nupdated the config \nrestarted the comptue agent\nand asserted it was remvoed or changed form yes to no\n\n\nthis woudl be automating the manual testing you did.\n\nthe db values are sort of teted indirectly by virtue fo the tests that crate a vm below but it could b enice to asset this separately.\n\nperhaps we can put that in a followup","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_create_server_with_VF_and_managed_set_to_yes(self):"},{"line_number":482,"context_line":"        device_spec \u003d ["},{"line_number":483,"context_line":"            {"},{"line_number":484,"context_line":"                \"vendor_id\": fakelibvirt.PCI_VEND_ID,"},{"line_number":485,"context_line":"                \"product_id\": fakelibvirt.PF_PROD_ID,"},{"line_number":486,"context_line":"                \"physical_network\": \"physnet4\","},{"line_number":487,"context_line":"            },"},{"line_number":488,"context_line":"            {"},{"line_number":489,"context_line":"                \"vendor_id\": fakelibvirt.PCI_VEND_ID,"},{"line_number":490,"context_line":"                \"product_id\": fakelibvirt.VF_PROD_ID,"}],"source_content_type":"text/x-python","patch_set":12,"id":"af647f76_c5c3192b","line":487,"range":{"start_line":483,"start_character":0,"end_line":487,"end_character":14},"updated":"2025-02-25 18:30:30.000000000","message":"why are you adding this?\nits type PF so its never going to match the pci alias anyway.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":505,"context_line":"                \"vendor_id\": fakelibvirt.PCI_VEND_ID,"},{"line_number":506,"context_line":"                \"product_id\": fakelibvirt.PF_PROD_ID,"},{"line_number":507,"context_line":"                \"physical_network\": \"physnet4\","},{"line_number":508,"context_line":"            },"},{"line_number":509,"context_line":"            {"},{"line_number":510,"context_line":"                \"vendor_id\": fakelibvirt.PCI_VEND_ID,"},{"line_number":511,"context_line":"                \"product_id\": fakelibvirt.VF_PROD_ID,"}],"source_content_type":"text/x-python","patch_set":12,"id":"c71e684d_7369e5d2","line":508,"updated":"2025-02-25 18:30:30.000000000","message":"same here its not addign any benifit to hva this here","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":537,"context_line":"        self._run_create_server_test("},{"line_number":538,"context_line":"            pci_info, expected_managed\u003d\"yes\", device_spec\u003ddevice_spec"},{"line_number":539,"context_line":"        )"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    def test_create_server_with_PF(self):"},{"line_number":542,"context_line":"        \"\"\"Create a server with an SR-IOV PF-type PCI device.\"\"\""},{"line_number":543,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"e274a402_b4ac92df","line":540,"updated":"2025-02-25 18:30:30.000000000","message":"you do not have any testing for the type-pf or type-pci\n\nmangaed\u003dfalse is valid for both of those as well.\n\nit might not be useful for the live migration usecase but\nthere are uscases such as reducing host irq load for unsued device wehre prebidnign to the generic vfio-pci is useful.\n\nthat does not require manage\u003dfalse to work but its perfectly valid to use with managed\u003dfalse.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":7889,"context_line":"        compute_ref \u003d objects.ComputeNode(**compute_info)"},{"line_number":7890,"context_line":"        return (service_ref, compute_ref)"},{"line_number":7891,"context_line":""},{"line_number":7892,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm(self):"},{"line_number":7893,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":7894,"context_line":"        service_ref, compute_ref \u003d self._create_fake_service_compute()"},{"line_number":7895,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"864dacb3_04b9e1fb","line":7892,"updated":"2025-01-14 13:32:55.000000000","message":"nit: I suggest to have 3 separate unit test cases for the 3 cases and pull out the common setup and assert code to helpers instead.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ebcc21893b7325847e76d255a95abffce5a12b0","unresolved":false,"context_lines":[{"line_number":7889,"context_line":"        compute_ref \u003d objects.ComputeNode(**compute_info)"},{"line_number":7890,"context_line":"        return (service_ref, compute_ref)"},{"line_number":7891,"context_line":""},{"line_number":7892,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm(self):"},{"line_number":7893,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":7894,"context_line":"        service_ref, compute_ref \u003d self._create_fake_service_compute()"},{"line_number":7895,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c907c10a_08701e2a","line":7892,"in_reply_to":"2f28712a_c3ab5ad3","updated":"2025-02-10 15:09:29.000000000","message":"Oops, sorry 😳\n\nShould be ok now.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":7889,"context_line":"        compute_ref \u003d objects.ComputeNode(**compute_info)"},{"line_number":7890,"context_line":"        return (service_ref, compute_ref)"},{"line_number":7891,"context_line":""},{"line_number":7892,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm(self):"},{"line_number":7893,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":7894,"context_line":"        service_ref, compute_ref \u003d self._create_fake_service_compute()"},{"line_number":7895,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2f28712a_c3ab5ad3","line":7892,"in_reply_to":"830d15c8_e163a600","updated":"2025-02-07 09:53:08.000000000","message":"This is still 3 unit test cases living in one function. If the setup is different then it is even more beneficial to have the 3 cases separated.\n\nA unit test should only assert one thing (some even consider one assert per unit test, I\u0027m OK about on scenario per unit test), so that when a test fails it is clear what is broken.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":true,"context_lines":[{"line_number":7889,"context_line":"        compute_ref \u003d objects.ComputeNode(**compute_info)"},{"line_number":7890,"context_line":"        return (service_ref, compute_ref)"},{"line_number":7891,"context_line":""},{"line_number":7892,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm(self):"},{"line_number":7893,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":7894,"context_line":"        service_ref, compute_ref \u003d self._create_fake_service_compute()"},{"line_number":7895,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b7cd4835_875427e0","line":7892,"in_reply_to":"864dacb3_04b9e1fb","updated":"2025-02-03 14:45:50.000000000","message":"The \"setup\" is not the same between methods.\nI can try to factorize, but I\u0027m not sure it will not make it more confusing.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"57218e05cf84d1bd8dad3e47371a5a844b1a0a95","unresolved":false,"context_lines":[{"line_number":7889,"context_line":"        compute_ref \u003d objects.ComputeNode(**compute_info)"},{"line_number":7890,"context_line":"        return (service_ref, compute_ref)"},{"line_number":7891,"context_line":""},{"line_number":7892,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm(self):"},{"line_number":7893,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":7894,"context_line":"        service_ref, compute_ref \u003d self._create_fake_service_compute()"},{"line_number":7895,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"830d15c8_e163a600","line":7892,"in_reply_to":"b7cd4835_875427e0","updated":"2025-02-03 17:56:21.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":7958,"context_line":"        self._assert_pci_device_config("},{"line_number":7959,"context_line":"            cfg, expected_managed, expected_function)"},{"line_number":7960,"context_line":""},{"line_number":7961,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm(self):"},{"line_number":7962,"context_line":"        self._test_get_guest_config_with_pci(\"0000:00:00.1\", None, \"yes\", \"1\")"},{"line_number":7963,"context_line":""},{"line_number":7964,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm_managed_yes(self):"},{"line_number":7965,"context_line":"        self._test_get_guest_config_with_pci("},{"line_number":7966,"context_line":"            \"0000:00:00.2\", \"true\", \"yes\", \"2\")"},{"line_number":7967,"context_line":""},{"line_number":7968,"context_line":"    def test_get_guest_config_with_pci_passthrough_kvm_managed_no(self):"},{"line_number":7969,"context_line":"        self._test_get_guest_config_with_pci("},{"line_number":7970,"context_line":"            \"0000:00:00.3\", \"false\", \"no\", \"3\")"},{"line_number":7971,"context_line":""},{"line_number":7972,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LOG\u0027, autospec\u003dTrue)"},{"line_number":7973,"context_line":"    def test_log_in_set_managed_node(self, mock_log):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7901d443_6b236951","line":7970,"range":{"start_line":7961,"start_character":2,"end_line":7970,"end_character":47},"updated":"2025-02-25 18:30:30.000000000","message":"nit: this would be a nice place to consider using ddt but its ok in its current form","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":6156,"context_line":""},{"line_number":6157,"context_line":"        return sysinfo"},{"line_number":6158,"context_line":""},{"line_number":6159,"context_line":"    def _set_managed_mode(self, pcidev, pci_obj\u003dNone):"},{"line_number":6160,"context_line":"        # only kvm support managed mode"},{"line_number":6161,"context_line":"        if CONF.libvirt.virt_type in (\u0027parallels\u0027,):"},{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"751195aa_44201ea0","line":6159,"updated":"2025-01-14 13:32:55.000000000","message":"please make the new param mandatory. I know that this breaks unit tests but it is better to make sure that all the caller now passes a pci_object otherwise we introduce a bug where pcidev.managed would not be set according to the pci_object","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":6156,"context_line":""},{"line_number":6157,"context_line":"        return sysinfo"},{"line_number":6158,"context_line":""},{"line_number":6159,"context_line":"    def _set_managed_mode(self, pcidev, pci_obj\u003dNone):"},{"line_number":6160,"context_line":"        # only kvm support managed mode"},{"line_number":6161,"context_line":"        if CONF.libvirt.virt_type in (\u0027parallels\u0027,):"},{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"508f0f01_2c67173c","line":6159,"in_reply_to":"751195aa_44201ea0","updated":"2025-02-03 14:45:50.000000000","message":"I have made the parameter mandatory and refactored it a bit to make it more straightforward according to me.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":6161,"context_line":"        if CONF.libvirt.virt_type in (\u0027parallels\u0027,):"},{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"},{"line_number":6163,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6164,"context_line":"            if pci_obj:"},{"line_number":6165,"context_line":"                managed \u003d pci_obj.extra_info.get(\u0027managed\u0027, \u0027yes\u0027)"},{"line_number":6166,"context_line":"                pcidev.managed \u003d managed"},{"line_number":6167,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8bb9045e_6a9754f2","line":6164,"updated":"2025-01-14 13:32:55.000000000","message":"make this mandatory please","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":6161,"context_line":"        if CONF.libvirt.virt_type in (\u0027parallels\u0027,):"},{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"},{"line_number":6163,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6164,"context_line":"            if pci_obj:"},{"line_number":6165,"context_line":"                managed \u003d pci_obj.extra_info.get(\u0027managed\u0027, \u0027yes\u0027)"},{"line_number":6166,"context_line":"                pcidev.managed \u003d managed"},{"line_number":6167,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"798b2fc4_76cceade","line":6164,"in_reply_to":"8bb9045e_6a9754f2","updated":"2025-02-03 14:45:50.000000000","message":"Done","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"01564dc0f6032702257fb8ce60b354cc8f51e46d","unresolved":true,"context_lines":[{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"},{"line_number":6163,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6164,"context_line":"            if pci_obj:"},{"line_number":6165,"context_line":"                managed \u003d pci_obj.extra_info.get(\u0027managed\u0027, \u0027yes\u0027)"},{"line_number":6166,"context_line":"                pcidev.managed \u003d managed"},{"line_number":6167,"context_line":""},{"line_number":6168,"context_line":"    def _get_guest_pci_device(self, pci_device):"}],"source_content_type":"text/x-python","patch_set":1,"id":"71226a4e_9e360371","line":6165,"updated":"2025-01-14 13:32:55.000000000","message":"This defaulting alone enough for the request from @smooney@redhat.com no to persist the tag if the value is yes.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"988227e596e360d9b1f2a9692d48af5e9b0e1ac0","unresolved":false,"context_lines":[{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"},{"line_number":6163,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6164,"context_line":"            if pci_obj:"},{"line_number":6165,"context_line":"                managed \u003d pci_obj.extra_info.get(\u0027managed\u0027, \u0027yes\u0027)"},{"line_number":6166,"context_line":"                pcidev.managed \u003d managed"},{"line_number":6167,"context_line":""},{"line_number":6168,"context_line":"    def _get_guest_pci_device(self, pci_device):"}],"source_content_type":"text/x-python","patch_set":1,"id":"97e748e3_4a28ab59","line":6165,"in_reply_to":"71226a4e_9e360371","updated":"2025-02-03 14:45:50.000000000","message":"I have addressed that point in the previous patch.","commit_id":"30600b3e10a6cf15de247b78babe0c5445094fef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":6158,"context_line":""},{"line_number":6159,"context_line":"    def _set_managed_mode(self, pcidev, managed):"},{"line_number":6160,"context_line":"        # only kvm support managed mode"},{"line_number":6161,"context_line":"        if CONF.libvirt.virt_type in (\u0027parallels\u0027,):"},{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"},{"line_number":6163,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6164,"context_line":"            pcidev.managed \u003d managed"},{"line_number":6165,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"113f914f_3c7521a0","line":6162,"range":{"start_line":6161,"start_character":0,"end_line":6162,"end_character":33},"updated":"2025-02-07 09:53:08.000000000","message":"I would add a debug log here if managed\u003dyes is coming from the caller but the driver decides that it is not supported and therefore the request is overridden.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ebcc21893b7325847e76d255a95abffce5a12b0","unresolved":false,"context_lines":[{"line_number":6158,"context_line":""},{"line_number":6159,"context_line":"    def _set_managed_mode(self, pcidev, managed):"},{"line_number":6160,"context_line":"        # only kvm support managed mode"},{"line_number":6161,"context_line":"        if CONF.libvirt.virt_type in (\u0027parallels\u0027,):"},{"line_number":6162,"context_line":"            pcidev.managed \u003d \u0027no\u0027"},{"line_number":6163,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6164,"context_line":"            pcidev.managed \u003d managed"},{"line_number":6165,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"b3892c18_a0983139","line":6162,"range":{"start_line":6161,"start_character":0,"end_line":6162,"end_character":33},"in_reply_to":"113f914f_3c7521a0","updated":"2025-02-10 15:09:29.000000000","message":"Done","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":false,"context_lines":[{"line_number":7756,"context_line":"            dev.domain, dev.bus, dev.slot, dev.function \u003d ("},{"line_number":7757,"context_line":"                pci_addr[\u0027domain\u0027], pci_addr[\u0027bus\u0027],"},{"line_number":7758,"context_line":"                pci_addr[\u0027device\u0027], pci_addr[\u0027function\u0027])"},{"line_number":7759,"context_line":"            self._set_managed_mode(dev, \"yes\")"},{"line_number":7760,"context_line":""},{"line_number":7761,"context_line":"            guest.add_device(dev)"},{"line_number":7762,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"2e9c2660_58a39caf","line":7759,"updated":"2025-02-07 09:53:08.000000000","message":"This shows that we probably have a feature opportunity within the cyborg integration to support cyborg devices that are using variant drivers.","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ff443877616415d9ced0f8704fb8cced038b38d9","unresolved":true,"context_lines":[{"line_number":913,"context_line":"        # to default values for properties that have not already been set."},{"line_number":914,"context_line":"        self._register_all_undefined_instance_details()"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    def _check_pci_whitelist(self):"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        need_specific_version \u003d False"},{"line_number":919,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"e25052e9_21ed0f89","line":916,"updated":"2025-02-24 10:56:08.000000000","message":"I don\u0027t get this, setting managed yes/no in the domain xml is not a recent addition. based on the doc it was support by libvirt for ever. Why do you think this needs libvir version 10.0.0?","commit_id":"ca80bbd0c2f35d5ba2ed2a5fb1110b59db9bcb6f"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"72d86ce35a286f2cb9b1834b2aca6eace6210580","unresolved":false,"context_lines":[{"line_number":913,"context_line":"        # to default values for properties that have not already been set."},{"line_number":914,"context_line":"        self._register_all_undefined_instance_details()"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    def _check_pci_whitelist(self):"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        need_specific_version \u003d False"},{"line_number":919,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fe457fde_5d00e103","line":916,"in_reply_to":"e25052e9_21ed0f89","updated":"2025-02-25 09:09:27.000000000","message":"Removed all the stuff for checking version.","commit_id":"ca80bbd0c2f35d5ba2ed2a5fb1110b59db9bcb6f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":6163,"context_line":"            LOG.debug(\"Managed mode set to \u0027%s\u0027 but it is overwritten by \""},{"line_number":6164,"context_line":"                      \"parallels hypervisor settings.\", managed)"},{"line_number":6165,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6166,"context_line":"            pcidev.managed \u003d \"yes\" if managed \u003d\u003d \"true\" else \"no\""},{"line_number":6167,"context_line":""},{"line_number":6168,"context_line":"    def _get_guest_pci_device(self, pci_device):"},{"line_number":6169,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"18b315c9_c2004574","line":6166,"range":{"start_line":6166,"start_character":29,"end_line":6166,"end_character":65},"updated":"2025-02-25 18:30:30.000000000","message":"this should jsut be \n\n`\"yes\" if managed else \"no\"`\n\nalthogh personally i would move the convertion form bool to \"yes\" and \"no\" to the \n\nwe woudl normally do that in LibvirtConfigGuestHostdev and i more or less conider the exsitng driect settign of a string to be tech debgt.\n\n\nwe have a get_yes_no_str and get_on_off_str funtions in the config object speficily to do this convertion form bool to the required value in the xml to encapsulate that knowldge in the config module\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/config.py#L117-L123\n\nso i woudl prefer if you used those and just passed the booleans areoudn in the driver.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f20ba06327d6e4f5e1433106d6404b388097e93","unresolved":true,"context_lines":[{"line_number":6163,"context_line":"            LOG.debug(\"Managed mode set to \u0027%s\u0027 but it is overwritten by \""},{"line_number":6164,"context_line":"                      \"parallels hypervisor settings.\", managed)"},{"line_number":6165,"context_line":"        if CONF.libvirt.virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"},{"line_number":6166,"context_line":"            pcidev.managed \u003d \"yes\" if managed \u003d\u003d \"true\" else \"no\""},{"line_number":6167,"context_line":""},{"line_number":6168,"context_line":"    def _get_guest_pci_device(self, pci_device):"},{"line_number":6169,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"683a57fd_dc03811c","line":6166,"range":{"start_line":6166,"start_character":29,"end_line":6166,"end_character":65},"in_reply_to":"18b315c9_c2004574","updated":"2025-02-26 09:37:38.000000000","message":"Can be discussed on a FUP","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":6170,"context_line":"        dbsf \u003d pci_utils.parse_address(pci_device.address)"},{"line_number":6171,"context_line":"        dev \u003d vconfig.LibvirtConfigGuestHostdevPCI()"},{"line_number":6172,"context_line":"        dev.domain, dev.bus, dev.slot, dev.function \u003d dbsf"},{"line_number":6173,"context_line":"        managed \u003d pci_device.extra_info.get(\u0027managed\u0027, \u0027true\u0027)"},{"line_number":6174,"context_line":"        self._set_managed_mode(dev, managed)"},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        return dev"}],"source_content_type":"text/x-python","patch_set":12,"id":"aa5857b8_94918b33","line":6173,"range":{"start_line":6173,"start_character":55,"end_line":6173,"end_character":60},"updated":"2025-02-25 18:30:30.000000000","message":"nit: this shoudl be a bool so `True` not `\"true\"`","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f20ba06327d6e4f5e1433106d6404b388097e93","unresolved":true,"context_lines":[{"line_number":6170,"context_line":"        dbsf \u003d pci_utils.parse_address(pci_device.address)"},{"line_number":6171,"context_line":"        dev \u003d vconfig.LibvirtConfigGuestHostdevPCI()"},{"line_number":6172,"context_line":"        dev.domain, dev.bus, dev.slot, dev.function \u003d dbsf"},{"line_number":6173,"context_line":"        managed \u003d pci_device.extra_info.get(\u0027managed\u0027, \u0027true\u0027)"},{"line_number":6174,"context_line":"        self._set_managed_mode(dev, managed)"},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        return dev"}],"source_content_type":"text/x-python","patch_set":12,"id":"81022daf_6f1ed6b8","line":6173,"range":{"start_line":6173,"start_character":55,"end_line":6173,"end_character":60},"in_reply_to":"101d01e2_dd0af37e","updated":"2025-02-26 09:37:38.000000000","message":"Yeah, I\u0027m afraid of that dict but that\u0027s not something we should modify now.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"89d03147cceae3e7dd6b7ea6d4ae9267af5837bf","unresolved":true,"context_lines":[{"line_number":6170,"context_line":"        dbsf \u003d pci_utils.parse_address(pci_device.address)"},{"line_number":6171,"context_line":"        dev \u003d vconfig.LibvirtConfigGuestHostdevPCI()"},{"line_number":6172,"context_line":"        dev.domain, dev.bus, dev.slot, dev.function \u003d dbsf"},{"line_number":6173,"context_line":"        managed \u003d pci_device.extra_info.get(\u0027managed\u0027, \u0027true\u0027)"},{"line_number":6174,"context_line":"        self._set_managed_mode(dev, managed)"},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        return dev"}],"source_content_type":"text/x-python","patch_set":12,"id":"cb272eb8_3f26080e","line":6173,"range":{"start_line":6173,"start_character":55,"end_line":6173,"end_character":60},"in_reply_to":"81022daf_6f1ed6b8","updated":"2025-02-26 11:33:35.000000000","message":"i belive the extra info dict is currently used as a json blob\n\nso as long as its a json data type which bool is we could evolve it in that direction if desired.\n\nits not an ovo however so its currently unversion so we do need to be a little careful with any future changes. so not now but i would not rule out doing this as long as we supprot the legacy format for a release or two.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62ae65c561f9d58aac93b0b2438e9e5380bd057a","unresolved":true,"context_lines":[{"line_number":6170,"context_line":"        dbsf \u003d pci_utils.parse_address(pci_device.address)"},{"line_number":6171,"context_line":"        dev \u003d vconfig.LibvirtConfigGuestHostdevPCI()"},{"line_number":6172,"context_line":"        dev.domain, dev.bus, dev.slot, dev.function \u003d dbsf"},{"line_number":6173,"context_line":"        managed \u003d pci_device.extra_info.get(\u0027managed\u0027, \u0027true\u0027)"},{"line_number":6174,"context_line":"        self._set_managed_mode(dev, managed)"},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        return dev"}],"source_content_type":"text/x-python","patch_set":12,"id":"101d01e2_dd0af37e","line":6173,"range":{"start_line":6173,"start_character":55,"end_line":6173,"end_character":60},"in_reply_to":"aa5857b8_94918b33","updated":"2025-02-26 08:45:21.000000000","message":"note that the field in the extra_info is a string, so you cannot directly get a bool out of it. As we already need to convert from one string representation (\"true\") to another (\"yes\"), it does not seem unreasonable to me to have a \"true\" -\u003e \"yes\" transformation instead of a \"true\" -\u003e true -\u003e \"yes\" transformation. \nThe best would be to have a better data model in extra_info instead of a string dict but that is probably an upgrade issue.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"}],"releasenotes/notes/enable-vfio-devices-with-kernel-variant-drivers-fb675539545d2db2.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0353f8a6cc632081da23b30853cb9b59fa0a3e72","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release adds support for SR-IOV devices"},{"line_number":5,"context_line":"    using the new kernel VFIO SR-IOV variant driver interface."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"32563d95_ae48173a","line":5,"updated":"2025-02-07 09:53:08.000000000","message":"please add a link to the new documentation","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"7ebcc21893b7325847e76d255a95abffce5a12b0","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release adds support for SR-IOV devices"},{"line_number":5,"context_line":"    using the new kernel VFIO SR-IOV variant driver interface."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1bb382c3_682e8c16","line":5,"in_reply_to":"32563d95_ae48173a","updated":"2025-02-10 15:09:29.000000000","message":"Done","commit_id":"410ec9dda3672dd020dcde3a86ef0cf31b15adc0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release adds support for SR-IOV devices"},{"line_number":5,"context_line":"    using the new kernel VFIO SR-IOV variant driver interface."},{"line_number":6,"context_line":"    See the `OpenStack pci-passthrough documentation`__ for more details."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"44722006_4d05b94c","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":40},"updated":"2025-02-25 18:30:30.000000000","message":"strictly speaking this is not just sriov devices\n\nits any pci device if its a pci device that does not suport sriov (type-PCI), an sriov pf (type-PF) or an sriov vf (type-VF) manged mode is equally appliable\n\nit does not apply to VDPA but thats because that is attached differently to the guest.","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b56d3092e876df2e93a3bbb6d5d9558ce2036da4","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release adds support for SR-IOV devices"},{"line_number":5,"context_line":"    using the new kernel VFIO SR-IOV variant driver interface."},{"line_number":6,"context_line":"    See the `OpenStack pci-passthrough documentation`__ for more details."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    .. __: https://docs.openstack.org/nova/latest/admin/pci-passthrough.html"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3209cd03_33ce7e4f","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":37},"updated":"2025-02-25 18:30:30.000000000","message":"here this is jsut wrong\n\nit a kernel vfio-pci variant driver","commit_id":"59afd1ee00b320b65727fab973313b6abfc7b99b"}]}
