)]}'
{"doc/source/specs/2026.2/approved/resource-provider-list-expansion-for-monitoring.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97e3ad09d0a93b5c9e3a4edf414c189ebb6b0494","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For ``N`` providers this is ``1 + 3N`` requests, plus pagination. In clouds"},{"line_number":31,"context_line":"with hundreds or thousands of providers this can make collection take several"},{"line_number":32,"context_line":"minutes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Horizon, Watcher, and similar services can also need dashboard or cloud-wide"},{"line_number":35,"context_line":"decision data. Placement has ``GET /usages`` for tenant usage, but not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a933f455_d61ed7af","line":32,"updated":"2026-09-30 17:37:29.000000000","message":"Am I missing that we support pagination in any of these APIs today? I didn\u0027t think we did and I don\u0027t see it in the existing api-ref at quick glance.","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"853028a4012cb3d23e2579c27473da433939f469","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For ``N`` providers this is ``1 + 3N`` requests, plus pagination. In clouds"},{"line_number":31,"context_line":"with hundreds or thousands of providers this can make collection take several"},{"line_number":32,"context_line":"minutes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Horizon, Watcher, and similar services can also need dashboard or cloud-wide"},{"line_number":35,"context_line":"decision data. Placement has ``GET /usages`` for tenant usage, but not"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5ffc301a_e878b4ff","line":32,"in_reply_to":"a933f455_d61ed7af","updated":"2026-10-01 00:05:03.000000000","message":"Done","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97e3ad09d0a93b5c9e3a4edf414c189ebb6b0494","unresolved":true,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"For example::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"  GET /resource_providers?include_inventories\u003dTrue\u0026include_usages\u003dTrue"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"returns the normal provider collection with inventories and usages embedded."},{"line_number":68,"context_line":"Existing filters and pagination continue to apply: expanded data is returned"}],"source_content_type":"text/x-rst","patch_set":1,"id":"59296ecc_37aded76","line":65,"updated":"2026-09-30 17:37:29.000000000","message":"This (if you include all the booleans) is basically \"dump the entire placement database via HTTP and JSON\" right? Especially since you don\u0027t seem to include any limits in this example, that seems problematic to me. AFAIK that means the placement worker that accepts this request loads the entire database state into memory (in objects) and then constructs a JSON string representation also in memory. I\u0027m actually not sure placement has a max result limit in config, but surely with this proposed expansion we\u0027d need to cap how much the request can generate in a single go right?","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"853028a4012cb3d23e2579c27473da433939f469","unresolved":true,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"For example::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"  GET /resource_providers?include_inventories\u003dTrue\u0026include_usages\u003dTrue"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"returns the normal provider collection with inventories and usages embedded."},{"line_number":68,"context_line":"Existing filters and pagination continue to apply: expanded data is returned"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7360ee6e_65dfe0e3","line":65,"in_reply_to":"59296ecc_37aded76","updated":"2026-10-01 00:05:03.000000000","message":"For this point, and the point above, I have gone into much more detail about pagination \u0026 limits. Hopefully that covers things. I apologize for missing that pagination as not supported already.","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97e3ad09d0a93b5c9e3a4edf414c189ebb6b0494","unresolved":true,"context_lines":[{"line_number":65,"context_line":"  GET /resource_providers?include_inventories\u003dTrue\u0026include_usages\u003dTrue"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"returns the normal provider collection with inventories and usages embedded."},{"line_number":68,"context_line":"Existing filters and pagination continue to apply: expanded data is returned"},{"line_number":69,"context_line":"only for providers in the current page."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Monitoring clients could reduce their request pattern to one expanded request"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e6fae941_a0744137","line":68,"updated":"2026-09-30 17:37:29.000000000","message":"I must be missing the \"existing...pagination\" you\u0027re talking about. Independent of that I\u0027d ask for some API response samples here which will give you the opportunity to show the pagination flow as well.","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"853028a4012cb3d23e2579c27473da433939f469","unresolved":false,"context_lines":[{"line_number":65,"context_line":"  GET /resource_providers?include_inventories\u003dTrue\u0026include_usages\u003dTrue"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"returns the normal provider collection with inventories and usages embedded."},{"line_number":68,"context_line":"Existing filters and pagination continue to apply: expanded data is returned"},{"line_number":69,"context_line":"only for providers in the current page."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Monitoring clients could reduce their request pattern to one expanded request"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff0583ef_b668c9b5","line":68,"in_reply_to":"e6fae941_a0744137","updated":"2026-10-01 00:05:03.000000000","message":"Done","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97e3ad09d0a93b5c9e3a4edf414c189ebb6b0494","unresolved":true,"context_lines":[{"line_number":99,"context_line":"No database schema migration is expected. The data is already present in the"},{"line_number":100,"context_line":"resource provider, inventory, allocation, and trait tables."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"There will be object/query impact: new set-oriented read helpers may be needed."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"REST API impact"},{"line_number":105,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"69408ae9_7465b3e6","line":102,"updated":"2026-09-30 17:37:29.000000000","message":"Can you add some detail for this?","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"853028a4012cb3d23e2579c27473da433939f469","unresolved":false,"context_lines":[{"line_number":99,"context_line":"No database schema migration is expected. The data is already present in the"},{"line_number":100,"context_line":"resource provider, inventory, allocation, and trait tables."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"There will be object/query impact: new set-oriented read helpers may be needed."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"REST API impact"},{"line_number":105,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b2da7387_efcc1d54","line":102,"in_reply_to":"69408ae9_7465b3e6","updated":"2026-10-01 00:05:03.000000000","message":"Done","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"97e3ad09d0a93b5c9e3a4edf414c189ebb6b0494","unresolved":true,"context_lines":[{"line_number":175,"context_line":"-----------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Primary assignee:"},{"line_number":178,"context_line":"  None"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Work Items"},{"line_number":181,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1e2706d5_2f83b5fd","line":178,"updated":"2026-09-30 17:37:29.000000000","message":"Are you not planning to do this work? No assignee kinda makes this look like you\u0027re writing a spec and asking someone else to implement it for you :)","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"853028a4012cb3d23e2579c27473da433939f469","unresolved":true,"context_lines":[{"line_number":175,"context_line":"-----------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Primary assignee:"},{"line_number":178,"context_line":"  None"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Work Items"},{"line_number":181,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e452369e_708c812c","line":178,"in_reply_to":"1e2706d5_2f83b5fd","updated":"2026-10-01 00:05:03.000000000","message":"Apologies, I put myself, I have every intention of doing the work :)","commit_id":"7778242d5e1b2c645b7507827a44c4447751c489"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"649600c412a693800ca4023eef619f73c07fd7b8","unresolved":true,"context_lines":[{"line_number":111,"context_line":"* ``include_inventories\u003dTrue|False``"},{"line_number":112,"context_line":"* ``include_usages\u003dTrue|False``"},{"line_number":113,"context_line":"* ``include_traits\u003dTrue|False``"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Each parameter defaults to ``False``. When ``True``, each provider includes"},{"line_number":116,"context_line":"the corresponding ``inventories`` object, ``usages`` object, or ``traits``"},{"line_number":117,"context_line":"list. Only requested subresources are queried and included."}],"source_content_type":"text/x-rst","patch_set":2,"id":"46ae6d08_5cfc4ce8","line":114,"updated":"2026-10-01 11:31:54.000000000","message":"i think we chatted about this on the mailign list and i suggesed takeing this approch or one like it but did you allso need a way to get usage info indepently or the resouce provider or is this sufficent for all your usecases?\n\ni rememebr talking to someone about not intoducing new rest endpoitn btu instead resuing the top level get endpoint with the ablity to include extra info if required such as the inventories usage and traits.\n\nthat woudl allow you to use the exiting filtering capablites on that endpoint like name, aggreate membership like member_of, nested rlationship via in_tree and requried/forbidden tratis filter or resouce classes.\n\nthis woudl be potitaly useful for services like watcher that allso need to efficly query placement ot bould its internal cluster data model.\n\nfor example when we drop and rebuild our compute data model today we iterate over each compute node and query placement as required one by one\n\nwhere as with this api we can add include_inventories\u003dTrue\u0026include_usages\u003dTrue\u0026required\u003dCOMPUTE_NODE\n\nalthough realy we want root_required not just required for that usecase but this still could be valueabel to watcher as we can reduce 3 quries to 1.\n\nwith that said taht a bit speculitve on my path as curently we are just using the resouce provider inventory information not usage or traits\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/model/collector/nova.py#L402-L450\n\nso its currenly 1 call for use but i expect we will need both the usage and traits in teh future to properly be able to place workloads as part of our action plans\n\nwe will also need to move to geting the full provider tree/allcoation later to account for things like pci devices ectra.","commit_id":"fef956811f5ba8825cdf1bd1e2ee23dd873b52d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"649600c412a693800ca4023eef619f73c07fd7b8","unresolved":true,"context_lines":[{"line_number":194,"context_line":"      }"},{"line_number":195,"context_line":"    ]"},{"line_number":196,"context_line":"  }"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"The client follows ``next`` with the same placement microversion header::"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"  GET /resource_providers?limit\u003d1\u0026marker\u003d00000000-0000-0000-0000-000000000001\u0026include_inventories\u003dTrue\u0026include_usages\u003dTrue\u0026include_traits\u003dTrue"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ff7beab_a825070f","line":197,"updated":"2026-10-01 11:31:54.000000000","message":"this is somewhat similar to the format used by the provider summeries that are returned form teh allcoation candiates api.\n\nhttps://docs.openstack.org/api-ref/placement/#response-example-microversions-1-34\n\nim not sure if we actully include link in teh provdier summersi respocne that would be more semanticly correct\n\nim wonderign if we shoudl try an align those more closely \nor if we prefer the format you are proposing.\ni can see arguments either way.","commit_id":"fef956811f5ba8825cdf1bd1e2ee23dd873b52d1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"649600c412a693800ca4023eef619f73c07fd7b8","unresolved":false,"context_lines":[{"line_number":363,"context_line":""},{"line_number":364,"context_line":"This supports page-scoped batch reads as a way to reduce database work per"},{"line_number":365,"context_line":"scrape, with the proposed page limits still to be validated against"},{"line_number":366,"context_line":"representative clouds."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"Other deployer impact"},{"line_number":369,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b2a56e24_0a649917","line":366,"updated":"2026-10-01 11:31:54.000000000","message":"ack\nthis is useful context.","commit_id":"fef956811f5ba8825cdf1bd1e2ee23dd873b52d1"}]}
