)]}'
{"specs/stein/approved/placement-subtree-filter-for-resource-providers.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"627bd3d07cdc49f59f31eaf34cb5e30b3f9a0642","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Performance Impact"},{"line_number":138,"context_line":"------------------"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"The existing ``in_tree`` implementation based on the root_provider_uuid field"},{"line_number":141,"context_line":"in the RP table. However the new ``subtree`` implementation needs to do some"},{"line_number":142,"context_line":"further recursive filtering in python based on the parent_provider_uuid field"},{"line_number":143,"context_line":"of the RPs in the tree. So we loose the performance benefit of pure SQL."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_59745f68","line":141,"range":{"start_line":140,"start_character":0,"end_line":141,"end_character":16},"updated":"2018-08-22 16:13:46.000000000","message":"this sentence is perhaps incomplete?","commit_id":"cceefcaab475e2975ea55eee521105091d8f27e2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5e3c33c61a2cd575e3c562abac784c10edf7d02b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Performance Impact"},{"line_number":138,"context_line":"------------------"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"The existing ``in_tree`` implementation based on the root_provider_uuid field"},{"line_number":141,"context_line":"in the RP table. However the new ``subtree`` implementation needs to do some"},{"line_number":142,"context_line":"further recursive filtering in python based on the parent_provider_uuid field"},{"line_number":143,"context_line":"of the RPs in the tree. So we loose the performance benefit of pure SQL."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_c6b4d538","line":141,"range":{"start_line":140,"start_character":0,"end_line":141,"end_character":16},"in_reply_to":"3f79a3b5_59745f68","updated":"2018-08-24 13:24:58.000000000","message":"Done","commit_id":"cceefcaab475e2975ea55eee521105091d8f27e2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"627bd3d07cdc49f59f31eaf34cb5e30b3f9a0642","unresolved":false,"context_lines":[{"line_number":140,"context_line":"The existing ``in_tree`` implementation based on the root_provider_uuid field"},{"line_number":141,"context_line":"in the RP table. However the new ``subtree`` implementation needs to do some"},{"line_number":142,"context_line":"further recursive filtering in python based on the parent_provider_uuid field"},{"line_number":143,"context_line":"of the RPs in the tree. So we loose the performance benefit of pure SQL."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Other deployer impact"},{"line_number":146,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_99d99757","line":143,"updated":"2018-08-22 16:13:46.000000000","message":"Well, you could do it in SQL with some graph traversal magic but it is probably not worth it. I think it would take a lot of data to make it a poor performer.","commit_id":"cceefcaab475e2975ea55eee521105091d8f27e2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5e3c33c61a2cd575e3c562abac784c10edf7d02b","unresolved":false,"context_lines":[{"line_number":140,"context_line":"The existing ``in_tree`` implementation based on the root_provider_uuid field"},{"line_number":141,"context_line":"in the RP table. However the new ``subtree`` implementation needs to do some"},{"line_number":142,"context_line":"further recursive filtering in python based on the parent_provider_uuid field"},{"line_number":143,"context_line":"of the RPs in the tree. So we loose the performance benefit of pure SQL."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Other deployer impact"},{"line_number":146,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_e68a3162","line":143,"in_reply_to":"3f79a3b5_99d99757","updated":"2018-08-24 13:24:58.000000000","message":"fair point.","commit_id":"cceefcaab475e2975ea55eee521105091d8f27e2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"13506595f09b297a33ba0b126591f65e78ba4baa","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The client of placement needs a list of RPs belonging to a RP subtree specified"},{"line_number":24,"context_line":"by the root of the subtree. The current ``in_tree`` query parameter of ``GET"},{"line_number":25,"context_line":"/resource_providers`` are only allow filtering for a given tree but does not"},{"line_number":26,"context_line":"support filtering for a given subtree."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This causes that the client needs to traverse the response from placement to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_af336213","line":25,"range":{"start_line":25,"start_character":22,"end_line":25,"end_character":36},"updated":"2018-08-28 21:58:13.000000000","message":"only allows","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"13506595f09b297a33ba0b126591f65e78ba4baa","unresolved":false,"context_lines":[{"line_number":25,"context_line":"/resource_providers`` are only allow filtering for a given tree but does not"},{"line_number":26,"context_line":"support filtering for a given subtree."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This causes that the client needs to traverse the response from placement to"},{"line_number":29,"context_line":"filter out what the client needs. This means the client needs to touch RPs it"},{"line_number":30,"context_line":"doesn\u0027t responsible for. E.g. neutron will report network agent RPs and network"},{"line_number":31,"context_line":"device RPs to placement as separate subtrees of the compute RP tree. So it is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_ef287a98","line":28,"range":{"start_line":28,"start_character":5,"end_line":28,"end_character":33},"updated":"2018-08-28 21:58:13.000000000","message":"makes the client need","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"13506595f09b297a33ba0b126591f65e78ba4baa","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This causes that the client needs to traverse the response from placement to"},{"line_number":29,"context_line":"filter out what the client needs. This means the client needs to touch RPs it"},{"line_number":30,"context_line":"doesn\u0027t responsible for. E.g. neutron will report network agent RPs and network"},{"line_number":31,"context_line":"device RPs to placement as separate subtrees of the compute RP tree. So it is"},{"line_number":32,"context_line":"natural from neutron perspective not to know about (with the exception of the"},{"line_number":33,"context_line":"root compute PR as the branching point) or iterate on RPs that nova creates"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_2f08b22b","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":7},"updated":"2018-08-28 21:58:13.000000000","message":"isn\u0027t","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"13506595f09b297a33ba0b126591f65e78ba4baa","unresolved":false,"context_lines":[{"line_number":30,"context_line":"doesn\u0027t responsible for. E.g. neutron will report network agent RPs and network"},{"line_number":31,"context_line":"device RPs to placement as separate subtrees of the compute RP tree. So it is"},{"line_number":32,"context_line":"natural from neutron perspective not to know about (with the exception of the"},{"line_number":33,"context_line":"root compute PR as the branching point) or iterate on RPs that nova creates"},{"line_number":34,"context_line":"(like NUMA RPs) and nova is responsible for."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This also leads to processing inefficiencies on the client side but that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_ca19ec7a","line":33,"range":{"start_line":33,"start_character":13,"end_line":33,"end_character":15},"updated":"2018-08-28 21:58:13.000000000","message":"RP","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"13506595f09b297a33ba0b126591f65e78ba4baa","unresolved":false,"context_lines":[{"line_number":48,"context_line":"to do local filtering of the result."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"In a more general sense every module other than Nova that provides resources"},{"line_number":51,"context_line":"belonging to a compute node in placement will need to manages RP subtrees in"},{"line_number":52,"context_line":"placement. And the roots of those subtrees are not the compute RP but"},{"line_number":53,"context_line":"descendants of it."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_0a3e04b9","line":51,"range":{"start_line":51,"start_character":54,"end_line":51,"end_character":61},"updated":"2018-08-28 21:58:13.000000000","message":"manage","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"13506595f09b297a33ba0b126591f65e78ba4baa","unresolved":false,"context_lines":[{"line_number":50,"context_line":"In a more general sense every module other than Nova that provides resources"},{"line_number":51,"context_line":"belonging to a compute node in placement will need to manages RP subtrees in"},{"line_number":52,"context_line":"placement. And the roots of those subtrees are not the compute RP but"},{"line_number":53,"context_line":"descendants of it."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Proposed change"},{"line_number":56,"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":2,"id":"3f79a3b5_6a43f814","line":53,"updated":"2018-08-28 21:58:13.000000000","message":"Sorry, I\u0027m not quite buying this.\n\nIn all cases I can think of, there can be more than one subtree. E.g. for neutron, the sub-root is the NIC / physical port / PF, right? And that will be a direct descendant of the compute RP or NUMA node RP (both \"owned\" by the compute).\n\nDitto e.g. devices under cyborg.\n\nDoing multiple \"subtree\" calls is going to be more expensive than client-side filtering from a single in_tree call pretty much every time.\n\nI\u0027m also totally not concerned about being able to \"see\" providers I don\u0027t \"own\". In fact, I see it as a necessary and healthy artifact of multiple agents being able to manage a single provider tree collaboratively.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c033665ab0a305e3403a04495a6750ada0e7b46","unresolved":false,"context_lines":[{"line_number":50,"context_line":"In a more general sense every module other than Nova that provides resources"},{"line_number":51,"context_line":"belonging to a compute node in placement will need to manages RP subtrees in"},{"line_number":52,"context_line":"placement. And the roots of those subtrees are not the compute RP but"},{"line_number":53,"context_line":"descendants of it."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Proposed change"},{"line_number":56,"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":2,"id":"3f79a3b5_1682f1c7","line":53,"in_reply_to":"3f79a3b5_4d92cc5a","updated":"2018-09-19 18:02:24.000000000","message":"You\u0027ve got three calls (one from each agent) regardless; it\u0027s just a matter of whether the filtering is happening on the server or client side. We\u0027re talking about a very small number of providers (irl, a single provider tree might have what, 10 nodes at most? 20?) so it\u0027s not like we\u0027re taking a big hit on the payload processing/transmittal.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a883cb129fc1097bbaa23488736d5a1ddb458db6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"In a more general sense every module other than Nova that provides resources"},{"line_number":51,"context_line":"belonging to a compute node in placement will need to manages RP subtrees in"},{"line_number":52,"context_line":"placement. And the roots of those subtrees are not the compute RP but"},{"line_number":53,"context_line":"descendants of it."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Proposed change"},{"line_number":56,"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":2,"id":"3f79a3b5_4d92cc5a","line":53,"in_reply_to":"3f79a3b5_6a43f814","updated":"2018-08-29 11:07:20.000000000","message":"You can see the current neutron model at L82 below. There are three neturon agent subtrees belonging to three different neturon agents. Every neutron subtree has its own neutron agent RP as the root of that subtree. Each neutron agent wants to handle its own subtree independently from each others and independently the nova owned part of the tree.\n\nThis also means that those multiple subtree calls you mention will happen in independent neutron agents. Therefore using an in_tree call instead would mean 3 in_tree calls (on in each agent) and 3 client side filtering (on in each agent).","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6f112e72ff295e48500789cbf716b4de8f9be005","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The query::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"  GET /resource_providers?subtree\u003dsriov_agent_uuid"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"would return 4 RPs: sriov_agent_uuid, uuid5(hostname:eth0),"},{"line_number":119,"context_line":"uuid5(hostname:eth1), uuid5(hostname:eth2)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_5915ea3b","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":50},"updated":"2018-08-27 06:28:53.000000000","message":"Probably thinking about same quesiton with Chris, try to understand why neutron need this.\n\nSo those three agent RPs are managed by three different neutron agent, and each agent doesn\u0027t want to fetch the whole tree back.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a883cb129fc1097bbaa23488736d5a1ddb458db6","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The query::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"  GET /resource_providers?subtree\u003dsriov_agent_uuid"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"would return 4 RPs: sriov_agent_uuid, uuid5(hostname:eth0),"},{"line_number":119,"context_line":"uuid5(hostname:eth1), uuid5(hostname:eth2)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_ed8cf836","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":50},"in_reply_to":"3f79a3b5_5915ea3b","updated":"2018-08-29 11:07:20.000000000","message":"exactly.\nAlso the three independent agent don\u0027t want to deal with the nova owned part of the tree.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6f112e72ff295e48500789cbf716b4de8f9be005","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"And the query::"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"  GET /resource_providers?subtree\u003dcompute_uuid"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"would return the whole tree."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_f977169f","line":123,"range":{"start_line":123,"start_character":2,"end_line":123,"end_character":46},"updated":"2018-08-27 06:28:53.000000000","message":"just guess, probably we can have \u0027depth\u0027 parameter in the future.\n\nLike I want to get all the compute node RPs, I can query like \u0027GET /resource_providers?depth\u003d1\u0026required\u003d!MISC_SHARED_RESOURCE\u0027","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a883cb129fc1097bbaa23488736d5a1ddb458db6","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"And the query::"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"  GET /resource_providers?subtree\u003dcompute_uuid"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"would return the whole tree."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_4d7bac28","line":123,"range":{"start_line":123,"start_character":2,"end_line":123,"end_character":46},"in_reply_to":"3f79a3b5_f977169f","updated":"2018-08-29 11:07:20.000000000","message":"Right now I don\u0027t have use case for depth this is the reason I\u0027m not proposing it here. But in general dept could be a filter too.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4c033665ab0a305e3403a04495a6750ada0e7b46","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"would return the whole tree."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"The ``subtree`` query parameter can fully replace the usage of the"},{"line_number":128,"context_line":"already existing ``in_tree`` parameter. The query using ``in_tree\u003d\u003crp.uuid\u003e``"},{"line_number":129,"context_line":"can be replaced with ``subtree\u003d\u003crp.root_provider_uuid\u003e``. However this spec"},{"line_number":130,"context_line":"does not aim to remove or even deprecate the already existing ``in_tree`` query"},{"line_number":131,"context_line":"parameter."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_1683d104","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":39},"updated":"2018-09-19 18:02:24.000000000","message":"Well, not really: to use `subtree` you have to know the root provider\u0027s UUID, whereas with in_tree, any provider in the tree will do.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6f112e72ff295e48500789cbf716b4de8f9be005","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"The ``subtree`` query parameter can fully replace the usage of the"},{"line_number":128,"context_line":"already existing ``in_tree`` parameter. The query using ``in_tree\u003d\u003crp.uuid\u003e``"},{"line_number":129,"context_line":"can be replaced with ``subtree\u003d\u003crp.root_provider_uuid\u003e``. However this spec"},{"line_number":130,"context_line":"does not aim to remove or even deprecate the already existing ``in_tree`` query"},{"line_number":131,"context_line":"parameter."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_d9225aa3","line":131,"range":{"start_line":129,"start_character":58,"end_line":131,"end_character":10},"updated":"2018-08-27 06:28:53.000000000","message":"Why don\u0027t we just extend the \u0027in_tree\u0027 parameter? People will want to fill a subtree uuid into in_tree parameter natually, at least I will think about it first.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a76239bef730db9384a1028f9b8a78dc322ba72f","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"The ``subtree`` query parameter can fully replace the usage of the"},{"line_number":128,"context_line":"already existing ``in_tree`` parameter. The query using ``in_tree\u003d\u003crp.uuid\u003e``"},{"line_number":129,"context_line":"can be replaced with ``subtree\u003d\u003crp.root_provider_uuid\u003e``. However this spec"},{"line_number":130,"context_line":"does not aim to remove or even deprecate the already existing ``in_tree`` query"},{"line_number":131,"context_line":"parameter."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_b3df24d5","line":131,"range":{"start_line":129,"start_character":58,"end_line":131,"end_character":10},"in_reply_to":"3f79a3b5_6d9d4856","updated":"2018-08-30 07:32:29.000000000","message":"I think I agree with you. We can\u0027t change in_tree.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a883cb129fc1097bbaa23488736d5a1ddb458db6","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"The ``subtree`` query parameter can fully replace the usage of the"},{"line_number":128,"context_line":"already existing ``in_tree`` parameter. The query using ``in_tree\u003d\u003crp.uuid\u003e``"},{"line_number":129,"context_line":"can be replaced with ``subtree\u003d\u003crp.root_provider_uuid\u003e``. However this spec"},{"line_number":130,"context_line":"does not aim to remove or even deprecate the already existing ``in_tree`` query"},{"line_number":131,"context_line":"parameter."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_6d9d4856","line":131,"range":{"start_line":129,"start_character":58,"end_line":131,"end_character":10},"in_reply_to":"3f79a3b5_d9225aa3","updated":"2018-08-29 11:07:20.000000000","message":"I couldn\u0027t be a direct extension of in_tree as in_tree already takes a uuid parameter that is an RP and it means give me the tree that this RP is in.\n\nIt would be a redefinition of in_tree to say that the uuid parameter now means the _root_ of a _subtree_ instead of a member of the whole tree.\n\nAlso I think that the English meaning of in_tree\u003duuid is closer to what that query does today than what subtree\u003duuid means.","commit_id":"82cb7a53fc71024cbf44ff697f7de5d9f486e732"}]}
