)]}'
{"id":"openstack%2Fopenstacksdk~1006239","triplet_id":"openstack%2Fopenstacksdk~master~I6e36cf7b7630ff57bd4bb314f502d125f2f409ff","project":"openstack/openstacksdk","branch":"master","topic":"placement-gaps","attention_set":{},"removed_from_attention_set":{"15334":{"account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"last_update":"2026-09-22 00:26:18.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I6e36cf7b7630ff57bd4bb314f502d125f2f409ff","subject":"placement: Add support for resource provider allocations","status":"MERGED","created":"2026-09-18 15:12:08.000000000","updated":"2026-09-22 00:27:29.000000000","submitted":"2026-09-22 00:26:18.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"1006239-placement-gaps","meta_rev_id":"1bda1c1e7c1f0a519a62749072e4f84726e5ebca","_number":1006239,"virtual_id_number":1006239,"owner":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-09-22 00:26:18.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"all":[{"value":2,"date":"2026-09-21 23:13:29.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"all":[{"value":1,"date":"2026-09-21 23:13:29.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Allow-Post-Review":{"all":[{"value":0,"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Abstain","+1":"Approved for Zuul Post Review Pipeline"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-18 17:01:57.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-09-21 23:13:29.000000000","updated_by":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"reviewer":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"state":"REVIEWER"}],"messages":[{"id":"4a4196c1b12c7d59993b34eeffde2cf722b8aeed","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-09-18 15:12:08.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"df1cf6c1e84772a29052666a9fde05d45d2ac4a9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-18 17:01:57.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8b89c8fe6df2450bb5b72c51f52ce8ad\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/03e97f1339814d7882db67525d0f6d5b : SUCCESS in 6m 22s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/dc86e52c309540e0904ff2505a92a37d : SUCCESS in 4m 42s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/fa95b06a676e4e7292e64ca07b333cff : SUCCESS in 5m 32s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d466341f77254ab0905d5cc61cd9b977 : SUCCESS in 5m 01s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/bf96446a372c4b429dbd1ad782aec130 : SUCCESS in 7m 17s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/f5b4405fc47f4ef491449fc632f14a48 : SUCCESS in 4m 29s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/8d53b68f6c514ea7be70c0b3bd85e588 : SUCCESS in 50m 06s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/819ad789579e49e7b2043b3ff226abf9 : SUCCESS in 4m 25s\n- osc-tox-py311-tips https://zuul.opendev.org/t/openstack/build/325c5825698348ebabd3c34a16c607ed : SUCCESS in 5m 32s\n- osc-tox-py314-tips https://zuul.opendev.org/t/openstack/build/fdf4c2841c9b4f26943df9e7ef155a97 : SUCCESS in 8m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/88ece8efab78489185e4b5c60450a331 : SUCCESS in 12m 31s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/36b75364ff61483796c912833243b96d : SUCCESS in 5m 21s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/c09f7c39d61049cd83b2be05e59b1ebf : SUCCESS in 1h 05m 25s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/0a4b60b40a9e4341bf78c6c991106941 : SUCCESS in 1h 25m 25s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/0315bf38b0d5415d98a76ac67c203405 : FAILURE in 1h 26m 17s (non-voting)\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/44ab88c4d20c4a1085b3c392d1a92c95 : SUCCESS in 45m 39s\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/3e97ed7ae8ff45368039863a78ac088e : SUCCESS in 36m 43s\n- openstacksdk-functional-devstack-compute-manila https://zuul.opendev.org/t/openstack/build/822ccd80ef51405ca3dd1a8836ed6382 : SUCCESS in 33m 43s\n- openstacksdk-functional-devstack-cyborg https://zuul.opendev.org/t/openstack/build/1f4533795f8b4a42a2f7643eba9c012b : SUCCESS in 29m 55s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/366ca5cee7ce4bd6ba36882a02b85f1d : SUCCESS in 33m 11s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/78ed2f4909964b7db0d308876bc9b157 : SUCCESS in 43m 27s\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/6d3d4325af5a40c3aa66f2edd784ca2a : SUCCESS in 1h 18m 34s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/4748eceed1244b77a9df824eddfab026 : SUCCESS in 1h 13m 35s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"22de4094e2f1239784af20e24b73f2b5a73cef49","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-09-21 15:50:43.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"b6890e39426938e1cc20a08a876f31eb048a9c07","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-21 17:29:41.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5e916e20fdae497ab7873d1949e9ec89\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/81551536023a4fd1a3091d2be3442089 : SUCCESS in 3m 33s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1dd3c7641f5e4b1d96962a40b9d6946a : SUCCESS in 4m 07s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/1defe53e0e344d6f8ec0b32e6e7b1a98 : SUCCESS in 3m 51s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/567883cb4c3d49e19028221fbe08ab62 : SUCCESS in 4m 30s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/baf44c58001240268f914a225184d52d : SUCCESS in 7m 37s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/5e0007f6fc204fd4b2f698f4d132eed5 : SUCCESS in 7m 53s (non-voting)\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/99924878e5d8498b8a2821a8a481358c : SUCCESS in 1h 00m 34s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/b0f1159939b948e5b77e6dca4a2dbebf : SUCCESS in 4m 20s\n- osc-tox-py311-tips https://zuul.opendev.org/t/openstack/build/8924f88ab82048ac8d5ac14812764330 : SUCCESS in 5m 25s\n- osc-tox-py314-tips https://zuul.opendev.org/t/openstack/build/c7cbf556b578492f92fc410d14478c18 : SUCCESS in 10m 10s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6a7910e1571d4d1e8dd1d00e28059540 : SUCCESS in 11m 45s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/73f5aee7a8324db896a89d274ee71ac4 : SUCCESS in 4m 19s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/7022bea9571d4fe88e806a8174961663 : SUCCESS in 55m 47s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/d53f4ea5e6cb4f77847cfd3b812cea4b : SUCCESS in 1h 09m 01s\n- openstacksdk-functional-devstack-networking-ext https://zuul.opendev.org/t/openstack/build/d53384e60851450fa7b7107d7879b469 : FAILURE in 1h 35m 22s (non-voting)\n- openstacksdk-functional-devstack-magnum https://zuul.opendev.org/t/openstack/build/9c861a7cf8a5440eaf6118abfba7566e : SUCCESS in 45m 46s\n- openstacksdk-functional-devstack-manila https://zuul.opendev.org/t/openstack/build/ac1be50f38284ecc929f279d6ddd9e0a : SUCCESS in 34m 31s\n- openstacksdk-functional-devstack-compute-manila https://zuul.opendev.org/t/openstack/build/4ae585f86da34bff80f9b5b9044903e0 : SUCCESS in 29m 19s\n- openstacksdk-functional-devstack-cyborg https://zuul.opendev.org/t/openstack/build/147a945fffb647b59780be869776abfb : SUCCESS in 18m 51s\n- openstacksdk-functional-devstack-masakari https://zuul.opendev.org/t/openstack/build/52f9c5412cda41a0b8ef3e7574303164 : SUCCESS in 18m 42s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/3594103a66fe4f4c8f94a83a100892b3 : SUCCESS in 44m 58s\n- osc-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/5940e4ef82b94a86b92755359c6c0869 : SUCCESS in 1h 08m 37s (non-voting)\n- ansible-collections-openstack-functional-devstack https://zuul.opendev.org/t/openstack/build/e35c07e403d04ce3b71f90c30afafb47 : FAILURE in 44m 06s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"4e24cf214cce7aa281970d9593f6d8abc3095bd7","author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"date":"2026-09-21 23:13:29.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"29c4cf83ae556657c15ba8199ee93f8aab2779a5","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-21 23:14:18.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"e21586d50da804ad9d8019d3fc26b5ebac6985ca","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 00:26:18.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fe08c95b4a60455688b0a6a0cf7d2c46\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/437134fcf840483f94dd58413c97b4e5 : SUCCESS in 5m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/196f625597934513837aec22a6dd6f85 : SUCCESS in 3m 56s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/7900038d0232478dafc6481057983437 : SUCCESS in 4m 08s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f8eb33b7c42248d2a0350350f66e0455 : SUCCESS in 8m 27s\n- openstacksdk-functional-devstack-tips https://zuul.opendev.org/t/openstack/build/745aa1ff30f643cf8334512de557819b : SUCCESS in 57m 09s\n- os-client-config-tox-py311-tips https://zuul.opendev.org/t/openstack/build/1776bf12cb8e4d35833f9b0442592e8b : SUCCESS in 3m 20s\n- osc-tox-py311-tips https://zuul.opendev.org/t/openstack/build/2a013a6818814407b7f2d0bb86aed254 : SUCCESS in 4m 56s\n- osc-tox-py314-tips https://zuul.opendev.org/t/openstack/build/8c1976fbb0e240b1be01a81b5c74eae4 : SUCCESS in 9m 24s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8c04d456788945e38af0d386f388f023 : SUCCESS in 9m 49s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/6e3f4700f1ee44478fdbc56e935b967f : SUCCESS in 4m 34s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/d135e9c3506d44d9915f5d5ab0d44a0f : SUCCESS in 1h 03m 43s\n- openstacksdk-functional-devstack-networking https://zuul.opendev.org/t/openstack/build/f566d3d247c241db86ae7ac7a3eca382 : SUCCESS in 1h 07m 17s\n- openstacksdk-functional-devstack-ironic https://zuul.opendev.org/t/openstack/build/fc8e8655615f4341a87057b1fd828cb3 : SUCCESS in 29m 38s","accounts_in_message":[],"_revision_number":2},{"id":"8af54b9ef4696ffcaaca54c4956af2f306000e8b","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 00:26:18.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"1bda1c1e7c1f0a519a62749072e4f84726e5ebca","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-22 00:27:29.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/eba91376135245e9a02b553dcfa7cbe7\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8f39dded40cb4f0e92d3035c59867182 : SUCCESS in 57s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"a4d41985e5bc3061f99ac00bdbf4a6359019293a","revisions":{"10f505e68b65af73651d7d4cd7e987a31f9fc1de":{"kind":"REWORK","_number":1,"created":"2026-09-18 15:12:08.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/39/1006239/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/39/1006239/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/1"}}},"commit":{"parents":[{"commit":"d06074f16f1ff6f8776380da2117e5c0768241f5","subject":"placement: Add support for bulk create of allocations","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/d06074f16f1ff6f8776380da2117e5c0768241f5"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2024-07-25 13:43:15.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-09-18 15:11:39.000000000","tz":60},"subject":"placement: Add support for resource provider allocations","message":"placement: Add support for resource provider allocations\n\nOnce again, placement is being different. Unlike most OpenStack APIs\nthat returns a list of objects, the resource provider allocation list\noperation returns an object with consumer IDs as the keys and\nallocations (nested under a \u0027resources\u0027 key) as the values. Put another\nway, we see:\n\n  {\n    \"56785a3f-6f1c-4fec-af0b-0faf075b1fcb\": {\n      \"resources\": {\n        \"MEMORY_MB\": 256,\n        \"VCPU\": 1\n      }\n    }\n  }\n\ninstead of the more typical:\n\n  [\n    {\n      \"consumer_id\": \"56785a3f-6f1c-4fec-af0b-0faf075b1fcb\",\n      \"resource_class\": \"MEMORY_MB\",\n      \"usage\": 256\n    },\n    ...\n  ]\n\nThis need special handling code, namely a reimplementation of the \u0027list\u0027\nclass method. Thankfully, we can only list allocations so no other\nmethods are needed.\n\nChange-Id: I6e36cf7b7630ff57bd4bb314f502d125f2f409ff\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/10f505e68b65af73651d7d4cd7e987a31f9fc1de"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/10f505e68b65af73651d7d4cd7e987a31f9fc1de"}]},"branch":"refs/heads/master"},"a4d41985e5bc3061f99ac00bdbf4a6359019293a":{"kind":"REWORK","_number":2,"created":"2026-09-21 15:50:43.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/39/1006239/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/openstacksdk","ref":"refs/changes/39/1006239/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/openstacksdk refs/changes/39/1006239/2"}}},"commit":{"parents":[{"commit":"b894cf7687be3ab161cfb66c75ef1b5064fa7f76","subject":"placement: Add support for bulk create of allocations","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/b894cf7687be3ab161cfb66c75ef1b5064fa7f76"}]}],"author":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2024-07-25 13:43:15.000000000","tz":60},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2026-09-21 15:49:14.000000000","tz":60},"subject":"placement: Add support for resource provider allocations","message":"placement: Add support for resource provider allocations\n\nOnce again, placement is being different. Unlike most OpenStack APIs\nthat returns a list of objects, the resource provider allocation list\noperation returns an object with consumer IDs as the keys and\nallocations (nested under a \u0027resources\u0027 key) as the values. Put another\nway, we see:\n\n  {\n    \"56785a3f-6f1c-4fec-af0b-0faf075b1fcb\": {\n      \"resources\": {\n        \"MEMORY_MB\": 256,\n        \"VCPU\": 1\n      }\n    }\n  }\n\ninstead of the more typical:\n\n  [\n    {\n      \"consumer_id\": \"56785a3f-6f1c-4fec-af0b-0faf075b1fcb\",\n      \"resource_class\": \"MEMORY_MB\",\n      \"usage\": 256\n    },\n    ...\n  ]\n\nThis need special handling code, namely a reimplementation of the \u0027list\u0027\nclass method. Thankfully, we can only list allocations so no other\nmethods are needed.\n\nChange-Id: I6e36cf7b7630ff57bd4bb314f502d125f2f409ff\nSigned-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/a4d41985e5bc3061f99ac00bdbf4a6359019293a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/openstacksdk/commit/a4d41985e5bc3061f99ac00bdbf4a6359019293a"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"}},{"label":"Allow-Post-Review","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Allow-Post-Review","description":"Allow Post Review","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
