)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"63e3e819_5df4ea39","updated":"2023-11-07 09:10:41.000000000","message":"The next step is to define how the user can identify a PCI devices that belongs to the same group in the nova.conf","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"61ee9b0980ad584c26d63a70597471c9d67c14f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3af1052a_f3597a24","updated":"2023-11-07 14:28:47.000000000","message":"sorry, these changes were pending on my machine, I will have a look at your comments in a set gibi, thanks for taking a look!","commit_id":"4647ec10a5467a3a96161d763009e728120309c3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1ad27ee59aa2b66509064deb94b5fb85c7a87390","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cbeab0a1_e631ee2e","updated":"2023-12-06 19:24:23.000000000","message":"I think this is solid enough to progress with and we can have a follow up for the remaining nits.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"18545d33_467a1085","updated":"2023-12-06 13:44:39.000000000","message":"This is a solid spec. I\u0027m sure we will find some dragons during the implementation but the direction is good.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7c0e4bae_2c353bc6","updated":"2023-12-06 12:55:08.000000000","message":"in general i like the direction and the clarity of the spec.\nthis is just a first pass so i need to reivew this again when i have let the ideas sit for a bit but this is in line with what we disucced in the ptg and i think its\nalso compaotiable iwth both how the pci tracker functions today and the recent pci in placement work.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f754b0d30b6113561d766413dd25c1e20b4ebc08","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6d842881_8db47e94","updated":"2023-11-23 17:03:45.000000000","message":"oh i didnt see you had proposed this cool. i dont have time to review today but ill try and take a look next week","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"}],"specs/2024.1/approved/pci-passthrough-groups.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/pci-passthrough-groups"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec allows operators to create a flavor users PCI alias to"},{"line_number":14,"context_line":"request a group of PCI devices. These groups of PCI devices are tracked"},{"line_number":15,"context_line":"as a single indivisible unit within Placement."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5b3633ce_20be6f88","line":13,"range":{"start_line":13,"start_character":46,"end_line":13,"end_character":51},"updated":"2023-11-07 09:10:41.000000000","message":"using?","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"118d393aed29a3598694eb53a7d7d4cdc7c19a2b","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/pci-passthrough-groups"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec allows operators to create a flavor users PCI alias to"},{"line_number":14,"context_line":"request a group of PCI devices. These groups of PCI devices are tracked"},{"line_number":15,"context_line":"as a single indivisible unit within Placement."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"50b70dd9_7d07faaf","line":13,"range":{"start_line":13,"start_character":46,"end_line":13,"end_character":51},"in_reply_to":"5b3633ce_20be6f88","updated":"2023-11-16 17:41:19.000000000","message":"Done","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":29,"context_line":"In particular, we make the simplifying restriction"},{"line_number":30,"context_line":"that a tracked PCI device can only be a member of a single group,"},{"line_number":31,"context_line":"and when a PCI device is a member of a group, it can only be used"},{"line_number":32,"context_line":"as part of that PCI group."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Use Cases"},{"line_number":35,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2858e093_fc54834e","line":32,"updated":"2023-11-07 09:10:41.000000000","message":"+1","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"118d393aed29a3598694eb53a7d7d4cdc7c19a2b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"In particular, we make the simplifying restriction"},{"line_number":30,"context_line":"that a tracked PCI device can only be a member of a single group,"},{"line_number":31,"context_line":"and when a PCI device is a member of a group, it can only be used"},{"line_number":32,"context_line":"as part of that PCI group."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Use Cases"},{"line_number":35,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"304afd38_49362925","line":32,"in_reply_to":"2858e093_fc54834e","updated":"2023-11-16 17:41:19.000000000","message":"Ack","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Some GPUs expose both a graphics physical function and an audio"},{"line_number":38,"context_line":"function. In order to support passing through both devices, we need"},{"line_number":39,"context_line":"to ensure that we pass through a matching pair of devices."},{"line_number":40,"context_line":"This spec would allow all a device group to be created such that"},{"line_number":41,"context_line":"operators configure the matching pairs of audio and graphics"},{"line_number":42,"context_line":"devices, and users can request one (or more) of those pairs via"},{"line_number":43,"context_line":"the usual PCI alias."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f9c2e1d_e63a5fda","line":40,"range":{"start_line":40,"start_character":15,"end_line":40,"end_character":40},"updated":"2023-11-07 09:10:41.000000000","message":"allow a device group","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"118d393aed29a3598694eb53a7d7d4cdc7c19a2b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Some GPUs expose both a graphics physical function and an audio"},{"line_number":38,"context_line":"function. In order to support passing through both devices, we need"},{"line_number":39,"context_line":"to ensure that we pass through a matching pair of devices."},{"line_number":40,"context_line":"This spec would allow all a device group to be created such that"},{"line_number":41,"context_line":"operators configure the matching pairs of audio and graphics"},{"line_number":42,"context_line":"devices, and users can request one (or more) of those pairs via"},{"line_number":43,"context_line":"the usual PCI alias."}],"source_content_type":"text/x-rst","patch_set":1,"id":"b7bedcf6_d7551faf","line":40,"range":{"start_line":40,"start_character":15,"end_line":40,"end_character":40},"in_reply_to":"9f9c2e1d_e63a5fda","updated":"2023-11-16 17:41:19.000000000","message":"Done","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":60,"context_line":"In addition, some servers can be statically configured to group"},{"line_number":61,"context_line":"either two devices, four devices or eight devices as a single group."},{"line_number":62,"context_line":"These can all be statically configured using PCI group to ensure"},{"line_number":63,"context_line":"we always respect the non-PCI connectivity between those PCI devices."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Proposed change"},{"line_number":66,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4d2c7241_663fac6b","line":63,"updated":"2023-11-07 09:10:41.000000000","message":"+1","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"118d393aed29a3598694eb53a7d7d4cdc7c19a2b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"In addition, some servers can be statically configured to group"},{"line_number":61,"context_line":"either two devices, four devices or eight devices as a single group."},{"line_number":62,"context_line":"These can all be statically configured using PCI group to ensure"},{"line_number":63,"context_line":"we always respect the non-PCI connectivity between those PCI devices."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Proposed change"},{"line_number":66,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8a6cf7ac_32b7b0de","line":63,"in_reply_to":"4d2c7241_663fac6b","updated":"2023-11-16 17:41:19.000000000","message":"Ack","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* extend `[pci]device_spec` to model groups of PCI devices"},{"line_number":71,"context_line":"* devices are linked by both a group type name, and a specific group name"},{"line_number":72,"context_line":"* the group type name is used to generate a custom resource class,"},{"line_number":73,"context_line":"  i.e. `CUSTOM_PCI_\u003cgroup_type_name\u003e`"},{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."}],"source_content_type":"text/x-rst","patch_set":1,"id":"b444be6e_56398312","line":73,"range":{"start_line":72,"start_character":0,"end_line":73,"end_character":37},"updated":"2023-11-07 09:10:41.000000000","message":"The `device_spec` already has the `resource_class` tag to specify any user defined resource class name. If it is not used then nova generates the resource class name in placement as ` CUSTOM_PCI_\u003cvendor_id\u003e_\u003cproduct_id\u003e` So I\u0027m wondering if we need another tag that modifies the resource class name.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57c83cda7c9b290d01b05e7e06fa82f006bf8daa","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* extend `[pci]device_spec` to model groups of PCI devices"},{"line_number":71,"context_line":"* devices are linked by both a group type name, and a specific group name"},{"line_number":72,"context_line":"* the group type name is used to generate a custom resource class,"},{"line_number":73,"context_line":"  i.e. `CUSTOM_PCI_\u003cgroup_type_name\u003e`"},{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."}],"source_content_type":"text/x-rst","patch_set":1,"id":"e27311a6_9716ed0a","line":73,"range":{"start_line":72,"start_character":0,"end_line":73,"end_character":37},"in_reply_to":"59912247_c7b341ab","updated":"2023-11-16 17:46:32.000000000","message":"Ack","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"76c0cfc6d0a318948c0397ffe226e0187f4517ba","unresolved":true,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* extend `[pci]device_spec` to model groups of PCI devices"},{"line_number":71,"context_line":"* devices are linked by both a group type name, and a specific group name"},{"line_number":72,"context_line":"* the group type name is used to generate a custom resource class,"},{"line_number":73,"context_line":"  i.e. `CUSTOM_PCI_\u003cgroup_type_name\u003e`"},{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."}],"source_content_type":"text/x-rst","patch_set":1,"id":"59912247_c7b341ab","line":73,"range":{"start_line":72,"start_character":0,"end_line":73,"end_character":37},"in_reply_to":"b444be6e_56398312","updated":"2023-11-07 15:27:17.000000000","message":"yes, I was thinking we add group_type, which takes precedence over the vendor product combo.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d2d91ee6_d002d1f1","line":77,"updated":"2023-11-07 09:10:41.000000000","message":"pci_alias already has a way to request a devices based on their resource_class. I would use that facility to request a group of PCI devices represented by a certain RC.\n\nThese tests shows our current scheduling capabilities based on RC and Traits in the pci_alias and device_spec  https://github.com/openstack/nova/blob/b64ecb0cc776bd3eced674b0f879bb23c8a4b486/nova/tests/functional/libvirt/test_pci_in_placement.py#L1618-L1723","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57c83cda7c9b290d01b05e7e06fa82f006bf8daa","unresolved":false,"context_lines":[{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"95d305cd_c92514f3","line":77,"in_reply_to":"0d7dd48f_984d48b6","updated":"2023-11-16 17:46:32.000000000","message":"Ack","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"118d393aed29a3598694eb53a7d7d4cdc7c19a2b","unresolved":true,"context_lines":[{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0d7dd48f_984d48b6","line":77,"in_reply_to":"3a24a2c9_4ca142e5","updated":"2023-11-16 17:41:19.000000000","message":"ah... I misunderstood you. Re-reading this I think it makes more sense now to use the existing alias maps to resource class, nice!","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"76c0cfc6d0a318948c0397ffe226e0187f4517ba","unresolved":true,"context_lines":[{"line_number":74,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a24a2c9_4ca142e5","line":77,"in_reply_to":"d2d91ee6_d002d1f1","updated":"2023-11-07 15:27:17.000000000","message":"I was trying to say the same thing, but using a \"group_type\" as a slightly more abstract way of having similar groups referred to as the same \"thing\".","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* pci groups are only supported when PCI devices are tracked in placement"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f12b772f_4aa6c901","line":78,"updated":"2023-11-07 09:10:41.000000000","message":"I\u0027m also wondering what will be the addressing scheme of the group in the PCI tracker. i.e. all of the currently supported addressing schemes identifies the matching devices based on some matching criteria, either vendor/product id or a potentially wildcarded PCI address (or the deprecated device name). Here we can try to use a wildcarded PCI address, or add a new scheme that allows a list of PCI addresses to be specified.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* pci groups are only supported when PCI devices are tracked in placement"}],"source_content_type":"text/x-rst","patch_set":1,"id":"acedc601_d70fe80f","line":78,"in_reply_to":"0345b3e1_86ae2a7e","updated":"2023-12-06 13:44:39.000000000","message":"What I\u0027m trying to get here is basically an example device_spec config to see how the deployer can do the configuration that creates the groups of devices. But I see it is added below now. So I will check there.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57c83cda7c9b290d01b05e7e06fa82f006bf8daa","unresolved":true,"context_lines":[{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* pci groups are only supported when PCI devices are tracked in placement"}],"source_content_type":"text/x-rst","patch_set":1,"id":"62d060ee_6e57bc56","line":78,"in_reply_to":"597ea278_e1014d29","updated":"2023-11-16 17:46:32.000000000","message":"I have added what I think is correct, in terms of making sure we track the group_names and group_type_names so we can do what is required.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":true,"context_lines":[{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* pci groups are only supported when PCI devices are tracked in placement"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0345b3e1_86ae2a7e","line":78,"in_reply_to":"62d060ee_6e57bc56","updated":"2023-12-06 12:55:08.000000000","message":"so my first tought is we just take the first adress for the group and use that\nfor the adress filed and store the set of adresses in the extra_info json blob.\nwe will need to extend the type enum with a new value “group” anyway so it will be trival to tell if the row is for a  group or a single device\nalternitivly its a bit of a hack but i would proably allow the pci adress filed to be nullable.\n\nif we dont like eithe rof those options we can take the set of pci adresses form teh group, contatonate them and use that as an input to uuid5 to generate a stable but unique uuid that we could use as and adress for the sole reaosn fo having a way to selct the group effeinctly to claim, allocate and release it in the pci tracker.\n\ni feel like the uuid approch is overkill but for what its worth windows does not expose the uuid via the hyperv driver.\nthey get back GUID from hyperv and invent fake pci adresses today so i dont really feel bad about extending the adress filed format to hold uuids but we would have to check the column size. i belive it would require a schma change we would need to consider this a little more clsoely as a result. its a  blance of lookup time vs data migration cost.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"76c0cfc6d0a318948c0397ffe226e0187f4517ba","unresolved":true,"context_lines":[{"line_number":75,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":76,"context_line":"  item for the associated group type custom resource type."},{"line_number":77,"context_line":"* extend `[pci]alias` so it be used to request a specific pci group type"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"There will be some configuration validation checks:"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* pci groups are only supported when PCI devices are tracked in placement"}],"source_content_type":"text/x-rst","patch_set":1,"id":"597ea278_e1014d29","line":78,"in_reply_to":"f12b772f_4aa6c901","updated":"2023-11-07 15:27:17.000000000","message":"good question, I don\u0027t know that part of the code very well.","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6dba036d253d7eaf8baccf75ab42f0aaaf763d9e","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"* pci groups are only supported when PCI devices are tracked in placement"},{"line_number":82,"context_line":"* all device groups must have two or more PCI devices"},{"line_number":83,"context_line":"* each physical PCI device can only be in one group,"},{"line_number":84,"context_line":"  and must only be tracked in placement once"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7fe1cc99_7a4d1345","line":83,"updated":"2023-11-07 09:10:41.000000000","message":"+1","commit_id":"738bafe808989ba73ff5e3f86d658831433920d0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":true,"context_lines":[{"line_number":16,"context_line":"resource class used to track these PCI groups is derived from the"},{"line_number":17,"context_line":"PCI group type name, and the name of the inventory is derived from"},{"line_number":18,"context_line":"the PCI group name. The pci_alias config already supports mapping"},{"line_number":19,"context_line":"to a specific placement resource class."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5ea743a6_7eff4409","line":19,"updated":"2023-12-06 12:55:08.000000000","message":"+1 very good introduciton to the spec","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Some PCI devices only make sense to be consumed as a group."},{"line_number":25,"context_line":"When you assign the grouped PCI devices to a VM, all of the"},{"line_number":26,"context_line":"devices in the group as always consumed together by a single VM."},{"line_number":27,"context_line":"Currently Nova does not understand any grouping other than"},{"line_number":28,"context_line":"NUMA affinity."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"18c0ef9a_23b44259","line":26,"updated":"2023-12-06 12:55:08.000000000","message":"devices in the group are","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":true,"context_lines":[{"line_number":33,"context_line":"In particular, we make the simplifying restriction"},{"line_number":34,"context_line":"that a tracked PCI device can only be a member of a single group,"},{"line_number":35,"context_line":"and when a PCI device is a member of a group, it can only be used"},{"line_number":36,"context_line":"as part of that PCI group."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"},{"line_number":39,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9bb4a3bd_af52a080","line":36,"updated":"2023-12-06 12:55:08.000000000","message":"+1 yes the restriction of disjoint groups simplifes the inital scope of the problem alot.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":true,"context_lines":[{"line_number":50,"context_line":"either the pair of devices or just the graphics device, as that"},{"line_number":51,"context_line":"would result in additional complexity that should be considered"},{"line_number":52,"context_line":"in a separate follow on specification."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Let us consider the specific case of the Graphcore C200 device,"},{"line_number":55,"context_line":"where a set of PCI cards are connected together via IPU-Link:"},{"line_number":56,"context_line":"https://docs.graphcore.ai/projects/C600-datasheet/en/latest/product-description.html#ipu-link-cables"}],"source_content_type":"text/x-rst","patch_set":6,"id":"8fc38735_df4591cc","line":53,"updated":"2023-12-06 12:55:08.000000000","message":"ack this will require a slight change to how we filter the device store in the data base but that should be quite doable\n\nthe pci tracker use a cascade of pure functions to filter the set of device so we can simply add a filter that will remove pci device that were allowed say by vendor/product id but are also refernced in a group as we a prepareing the set of \nfrestanding and grouped devices.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":false,"context_lines":[{"line_number":76,"context_line":"* the group type name is used to generate a custom resource class,"},{"line_number":77,"context_line":"  i.e. `CUSTOM_PCI_GROUP\u003cgroup_type_name\u003e`. Note this is just the default"},{"line_number":78,"context_line":"  that changes when you specify a group type name, and it can be"},{"line_number":79,"context_line":"  overrriden by explicitly specifying a different resource_class tag."},{"line_number":80,"context_line":"* Each group is registered in placement, in a similar way to a device."},{"line_number":81,"context_line":"  Each group being a separate resource provider with a single inventory"},{"line_number":82,"context_line":"  item for the associated group type custom resource type, with a name"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ea511c00_7a74694f","line":79,"updated":"2023-12-06 13:44:39.000000000","message":"+1","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"  item for the associated group type custom resource type, with a name"},{"line_number":83,"context_line":"  that is generated from the group_name rather than the PCI device address"},{"line_number":84,"context_line":"* extend `[pci]alias` simply mapps to the resource class mentioned"},{"line_number":85,"context_line":"  above, such as `CUSTOM_PCI_GROUP_\u003cgroup_type_name\u003e`."},{"line_number":86,"context_line":"* PCI tracker will have the group_name and group_type_name added to"},{"line_number":87,"context_line":"  each device that is being tracked, such that we can look up a group"},{"line_number":88,"context_line":"  of devices associated with each specific named group tracked"}],"source_content_type":"text/x-rst","patch_set":6,"id":"22fc7d70_3d72f5d9","line":85,"updated":"2023-12-06 13:44:39.000000000","message":"+1","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* PCI tracker will have the group_name and group_type_name added to"},{"line_number":87,"context_line":"  each device that is being tracked, such that we can look up a group"},{"line_number":88,"context_line":"  of devices associated with each specific named group tracked"},{"line_number":89,"context_line":"  in placement."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"There will be configuration validation checks:"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"54f6e02a_42e5685f","line":89,"updated":"2023-12-06 13:44:39.000000000","message":"+1","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":true,"context_lines":[{"line_number":111,"context_line":"    device_spec \u003d {\"address\": \":4f:00.0\", group_name:\"graphcore_1\", group_type:\"c200_x1\"}"},{"line_number":112,"context_line":"    device_spec \u003d {\"address\": \":4e:00.0\", group_name:\"graphcore_2\", group_type:\"c200_x1\"}"},{"line_number":113,"context_line":"    device_spec \u003d {\"address\": \":4f:00.0\", group_name:\"graphcore_2\", group_type:\"c200_x1\"}"},{"line_number":114,"context_line":"    alias \u003d {\"name\":\"c200_x1\", resource_class:\"CUSTOM_PCI_GROUP_C200_X1\"}"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"But exposing the two cards, exposed as four PCI devices,"},{"line_number":117,"context_line":"as a single unit of 4 PCI devices, would look like this:::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"991b10dd_f164fb1b","line":114,"updated":"2023-12-06 13:44:39.000000000","message":"Looks good. So `group_name` will be an ID for specific resource (a group of pci devs) to be passed through. And the `group_type` is used to represent the resource type to request.\n\nThis addresses my question about how we address pci device groups. It is not a list of devices in a single spec, but multiple spec, each defining a PCI device by address and have a key that connect it to other specs. \n\nRight now the device_spec would allow the following:\n```\n\n[pci]\ndevice_spec \u003d {\"address\": \":4.*:00.0\", group_name:\"graphcore_1\", group_type:\"c200_x1\"}\n\n```\n\nWhere the address and therefore the spec matching two PCI devices. If this will work without any extra implementation effort then I\u0027m fine to support this. If this would require addition effort then I would simply reject a spec with a wildcard address if there are group_name in the spec.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"537c7449ab78738df237c38a00f5ddaaa01476a4","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    device_spec \u003d {\"address\": \":4e:00.0\", group_name:\"graphcore_1\", group_type:\"c200_x2\"}"},{"line_number":123,"context_line":"    device_spec \u003d {\"address\": \":4f:00.0\", group_name:\"graphcore_1\", group_type:\"c200_x2\"}"},{"line_number":124,"context_line":"    alias \u003d {\"name\":\"c200_x2\", resource_class:\"CUSTOM_PCI_GROUP_C200_X2\"}"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Alternatives"},{"line_number":127,"context_line":"------------"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7cc38d27_1c09de01","line":125,"updated":"2023-12-06 12:55:08.000000000","message":"ya i think that works.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ce3a01924cf0bd20601ec644b0a487964bef8ba3","unresolved":true,"context_lines":[{"line_number":198,"context_line":"---------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Feature liaison:"},{"line_number":201,"context_line":"  gibi?"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Work Items"},{"line_number":204,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"37da290c_77ba655e","line":201,"updated":"2023-12-06 13:44:39.000000000","message":"Yes, you can add me here :)","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85ac79b02d685bc3dee2cc0463b131c56c79cba5","unresolved":true,"context_lines":[{"line_number":218,"context_line":"Testing"},{"line_number":219,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Add a functional test, similar to vgpu tests."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Documentation Impact"},{"line_number":224,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"39f227c1_eee65254","line":221,"updated":"2023-12-06 19:26:36.000000000","message":"by the way we dont currenlty have a third party ci where we can reasonabel test this. we can perhaps extend https://opendev.org/openstack/whitebox-tempest-plugin/src/branch/master/whitebox_tempest_plugin/api/compute/test_sriov.py\nto add coverage for this in teh future.\n\nif we end up support this downstream in the future we will do that as part of productising this.","commit_id":"4bd55ded70da448cd6c7b0927c59e08b1453a4d6"}]}
