)]}'
{"specs/2026.2/approved/pci-mixed-resource-class-per-pf.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":56,"context_line":"The proposed change modifies the PCI Placement translator to allow VFs"},{"line_number":57,"context_line":"under the same parent PF to have different ``resource_class`` values by"},{"line_number":58,"context_line":"creating separate child Resource Providers for each distinct resource class"},{"line_number":59,"context_line":"group."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Currently, ``PciResourceProvider.add_child()`` in"},{"line_number":62,"context_line":"``nova/compute/pci_placement_translator.py`` rejects any VF whose"}],"source_content_type":"text/x-rst","patch_set":1,"id":"02647dd5_cbfa9cc1","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":5},"updated":"2026-06-04 11:20:41.000000000","message":"nit: as we will group PCI devices as well later on I would suggest not to use the group terminology here as it will cause confusion.\n\nAs far as I see simply dropping the \"group\" word keeps the spec readable. Like\n* \"child Resource Proveidr for each distinct resource_class\" or\n* \"VF RP\"\n*  \"Each VF RP would:\"","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":62,"context_line":"``nova/compute/pci_placement_translator.py`` rejects any VF whose"},{"line_number":63,"context_line":"``resource_class`` differs from previously added siblings. Instead of"},{"line_number":64,"context_line":"raising ``PlacementPciMixedResourceClassException``, the translator should"},{"line_number":65,"context_line":"create a new child RP for VFs with a different resource class."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The resulting Placement model would look like::"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a23bdbd_c4b57dd3","line":65,"updated":"2026-06-04 11:20:41.000000000","message":"Could you list the reasons why we need child RPs? \nI know one: The traits are belonging to the RP not belonging to a specific inventory on the RP. So while we could have two distinct inventories on the same RP with different RCs, we cannot have two sets of traits on the same RP. Is there any other reason? Maybe something about mapping allocations in placement to PCIDevice objects in the device pools?","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":82,"context_line":"- The RP naming scheme must be deterministic and stable across restarts to"},{"line_number":83,"context_line":"  avoid orphaned RPs in Placement."},{"line_number":84,"context_line":"- The ``nova/pci/stats.py`` module contains assumptions about VF"},{"line_number":85,"context_line":"  equivalence under a PF that need to be reviewed and potentially updated."},{"line_number":86,"context_line":"- This work must be coordinated with the PCI Grouping effort to avoid"},{"line_number":87,"context_line":"  conflicts."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba9957de_48f7ceae","line":85,"updated":"2026-06-04 11:20:41.000000000","message":"I suggest to do this investigation to see how big is the effort needed there.","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"This change is opt-in via configuration. Existing deployments that do not"},{"line_number":153,"context_line":"configure multiple resource classes per PF are unaffected."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"A new RPC version is required. The PCI claim and allocation data passed"},{"line_number":156,"context_line":"between conductor/scheduler and compute nodes must carry the sub-grouped"},{"line_number":157,"context_line":"RP structure. During rolling upgrades (N-1 compatibility), the conductor"},{"line_number":158,"context_line":"must check the compute service version before sending allocations that"},{"line_number":159,"context_line":"use multiple resource classes per PF. If the target compute node is not"},{"line_number":160,"context_line":"upgraded, the operation should be rejected."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"For deployments adopting this feature:"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"c16d3dcf_e7385645","line":160,"range":{"start_line":154,"start_character":0,"end_line":160,"end_character":43},"updated":"2026-06-04 11:20:41.000000000","message":"I\u0027m not sure about this. As we had no RPC impact in the original PCI in Placement work either as far as I remember.\n\nOn the request side (flavor, InstancePCIRequest) I don\u0027t see any change due to this spec. The resource availability reporting changes on the compute but that is communicated to placement. The PCI claim happens on the compute side. The scheduler allocates in placement only.\n\nThe PCI pools are mapped to placement RP uuids by the compute node and report is via the stats module to the scheduler. So the scheduling happens based on the allocation_candidate form placement having the PCI RP uuids, and the PCI pools in stats are also mapped to those RP uuids by the compute via the DB. So the PCI filter just rely on these uuids to find the PCI pool that matches with the Placement allocation candidate.","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"For deployments adopting this feature:"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"- All compute nodes hosting the affected devices must be upgraded first."},{"line_number":165,"context_line":"- Hosts must be drained of instances using the affected PCI devices."},{"line_number":166,"context_line":"- The ``[pci]device_spec`` configuration is updated."},{"line_number":167,"context_line":"- The ``nova-compute`` service is restarted, which creates the new RP"}],"source_content_type":"text/x-rst","patch_set":1,"id":"72d0f6f3_a6b5952c","line":164,"updated":"2026-06-04 11:20:41.000000000","message":"Btw we can reshape with existing PCI allocation if we want, that alone does not require draining the host from PCI allocations. The extra complication here to check is that after the reshape we need to update the PciDevice objects as they are having a reference to the RP uuid as well as the device pools in stats. I\u0027m not sure how much of this will happen automatically by the translator out of the box.\n\nOf course if the deployer want to change the RC of an already allocated VF, then that is not possible without removing the allocation first.","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":167,"context_line":"- The ``nova-compute`` service is restarted, which creates the new RP"},{"line_number":168,"context_line":"  structure and cleans up old inventories."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Implementation"},{"line_number":172,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fbdd73f5_4c1a9708","line":170,"updated":"2026-06-04 11:20:41.000000000","message":"Do you suggest to reshape the tree to the new format even if only one resource class is used within a PF? Or only reshape it if more than one RC is used per PF?","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fbd5b581089fb3954aeafdac6aa30cb9009098fb","unresolved":true,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"- This feature should be coordinated with the PCI Grouping work led by"},{"line_number":209,"context_line":"  Balazs Gibizer (gibi) to avoid implementation conflicts."},{"line_number":210,"context_line":"- Related bug: https://bugs.launchpad.net/nova/+bug/2145783"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"abe2d190_8ae1f32c","line":210,"updated":"2026-06-04 11:20:41.000000000","message":"This will not be done in the H cycle.","commit_id":"52dbd32bc67f537629b77a9acb88eae564df64b0"}]}
