)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"64fe5c74e19998be3c94876b908bc063d41b7de1","unresolved":true,"context_lines":[{"line_number":13,"context_line":"(20% of startup)."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fix: add ProviderTree.subtree(name_or_uuid) which deep-copies only"},{"line_number":16,"context_line":"the O(K) providers rooted at the requested node (K ≈ 1–5 for a"},{"line_number":17,"context_line":"baremetal node plus any PCI children), then wire it up via new"},{"line_number":18,"context_line":"subtree_only\u003dTrue parameter on get_provider_tree_and_ensure_root()."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"update_from_provider_tree() gains a matching scope_rp_uuid parameter"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"285c24e8_b53492ab","line":17,"range":{"start_line":16,"start_character":3,"end_line":17,"end_character":39},"updated":"2026-03-23 17:04:28.000000000","message":"actully for bearmetal nodes today we dont use nested resouce providers\n\nbwe ened up with many root rps\n\nso this is really a forest data stucure with a lot of single node trees in the ironic case\n\nand a forset of a small number (typically 1) tree with nesting in the libvirt case.\n\nwe only have multipel root rps in the libvirt case if we are considing somehting like sharing resouce providers","commit_id":"157cff3408e4501c87f2e8d348031d73aa12489d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab8eb9c5fd6329103aea28a816253d68281873af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d9013639_5445205d","updated":"2026-05-13 17:10:11.000000000","message":"just a rebase via the ui to get new results","commit_id":"33c5e1fba0ac36f3069f3030bc699189fdb150f3"}],"nova/compute/provider_tree.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b127a73b6394c7e739e1012fd32efe6e8bfa3d67","unresolved":true,"context_lines":[{"line_number":728,"context_line":"            provider \u003d self._find_with_lock(name_or_uuid)"},{"line_number":729,"context_line":"            return provider.update_resources(resources)"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"    def subtree(self, name_or_uuid):"},{"line_number":732,"context_line":"        \"\"\"Return a new ProviderTree containing only the subtree rooted at the"},{"line_number":733,"context_line":"        provider identified by name_or_uuid."},{"line_number":734,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d63d6d77_3fa7d09a","line":731,"range":{"start_line":731,"start_character":8,"end_line":731,"end_character":15},"updated":"2026-03-23 17:49:02.000000000","message":"note this can be subtree in teh case of the livbirt driver but in the ironic cass its a seprate root tree\n\nhttps://en.wikipedia.org/wiki/Tree_(graph_theory)\n\nplacements datamodels is best dsecriped as a forest fo provider trees\n\nfor libvirt we have a signel root provider with nested child providers for pci devices ectra per compute agent.\n\nso its a forest of 1 tree with depth of 2-3 and a breath per layer in the 10s\n\nfor the ironic driver its a depth of 1 were each ironic node is a root rp with no nested resocues.\n\nthe subtree funciton will allow us to only copyt the rp we are modifyting instead fo all the rps for the sibling ironic nodes which shoudl eb a massive win\n\nim not sure if this will be useful for livbirt or other virt driver to use but maybe.","commit_id":"157cff3408e4501c87f2e8d348031d73aa12489d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b127a73b6394c7e739e1012fd32efe6e8bfa3d67","unresolved":true,"context_lines":[{"line_number":732,"context_line":"        \"\"\"Return a new ProviderTree containing only the subtree rooted at the"},{"line_number":733,"context_line":"        provider identified by name_or_uuid."},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        For the Ironic (1:N) driver this is a single root provider plus any"},{"line_number":736,"context_line":"        PCI child providers -- typically O(1-5) entries regardless of N."},{"line_number":737,"context_line":"        Callers that only need to inspect or mutate one node\u0027s data should use"},{"line_number":738,"context_line":"        this instead of copy.deepcopy(whole_tree) to avoid O(N²) behaviour."},{"line_number":739,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bbef0d57_d1ed45b8","line":736,"range":{"start_line":735,"start_character":67,"end_line":736,"end_character":72},"updated":"2026-03-23 17:49:02.000000000","message":"as noted above this bit i belive is an ai huliscation in the context of ironic.\n\nthere is no conceptaul reason that ironic nodes coudl not have nested resouce provider but they do not today so it will just be the root rp for the relevent ironic node","commit_id":"157cff3408e4501c87f2e8d348031d73aa12489d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab8eb9c5fd6329103aea28a816253d68281873af","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        \"\"\"Return a new ProviderTree containing only the subtree rooted at the"},{"line_number":733,"context_line":"        provider identified by name_or_uuid."},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        For the Ironic (1:N) driver this is a single root provider plus any"},{"line_number":736,"context_line":"        PCI child providers -- typically O(1-5) entries regardless of N."},{"line_number":737,"context_line":"        Callers that only need to inspect or mutate one node\u0027s data should use"},{"line_number":738,"context_line":"        this instead of copy.deepcopy(whole_tree) to avoid O(N²) behaviour."},{"line_number":739,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"98d0d0e7_d050d67e","line":736,"range":{"start_line":735,"start_character":67,"end_line":736,"end_character":72},"in_reply_to":"bbef0d57_d1ed45b8","updated":"2026-05-13 17:10:11.000000000","message":"Done","commit_id":"157cff3408e4501c87f2e8d348031d73aa12489d"}]}
