)]}'
{"id":"openstack%2Fnova~984383","triplet_id":"openstack%2Fnova~master~I653398ac2de2fe5bdf738aeae2ece0f643f0a42d","project":"openstack/nova","branch":"master","attention_set":{"782":{"account":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"last_update":"2026-04-13 17:09:22.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I653398ac2de2fe5bdf738aeae2ece0f643f0a42d","subject":"scheduler: support shared tenant placement aggregates","status":"NEW","created":"2026-04-13 13:01:36.000000000","updated":"2026-04-13 21:17:42.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"c1b1fe838efd034367bb6ba159bf24a9803c0e8e","_number":984383,"virtual_id_number":984383,"owner":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-04-13 17:09:22.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":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_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":{"all":[{"_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},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]}],"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-04-13 13:39:57.000000000","updated_by":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-04-13 17:09:22.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"}],"messages":[{"id":"8fa9101f752a8f50dfdd296ffad222f5eac24868","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 13:01:36.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"dcb47d17a887e7d6e922607146126437ffc13c18","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 13:02:56.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":1},{"id":"8d8539d8a5cc2345570f6dd34740be09cc080653","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 13:29:52.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"805f8e52aa487ab661d133a8e28007291d35251f","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 13:32:06.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"69172d9d28194e257d2d6843e3a5f3a2ca498426","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 13:39:57.000000000","message":"Patch Set 1:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":1},{"id":"80084216f84a5aadc128d874cc36b7d8c442e639","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 14:09:02.000000000","message":"Patch Set 2:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":2},{"id":"d8b7ef4f7246b685fbc06328b7167d0dc93c6f15","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 14:10:44.000000000","message":"Patch Set 3:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":3},{"id":"335dbf4ab838978da37a9b4d04236971fd3055d9","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 14:24:24.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"36b7b7fec64f4b0b1a14f86039f61fc34d897016","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 14:29:50.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"7dd8c6659c88fa9e6637d26de1f55a1290751410","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 14:34:26.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"67b0febd7d8ac7825ad544859af72eb7ec331a54","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 14:37:01.000000000","message":"Patch Set 7: Published edit on patch set 6.","accounts_in_message":[],"_revision_number":7},{"id":"0ccd96bdfea4ba5255d17c71ef1b2621466cce33","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2026-04-13 14:37:24.000000000","message":"Patch Set 7:\n\nThis change is ready for review.","accounts_in_message":[],"_revision_number":7},{"id":"c89091e0136622d5c1aca0a6ff827193540b58d4","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 15:03:05.000000000","message":"Patch Set 4:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":4},{"id":"62877fa345c0c0093a17681019749370185a50d1","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 15:09:30.000000000","message":"Patch Set 5:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":5},{"id":"6ec6be5342057cd0d83077f2ee94453f31abf718","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 15:13:54.000000000","message":"Patch Set 6:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":6},{"id":"3027568148ddfb02cf38baa86b1722c0739c4436","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-04-13 15:16:17.000000000","message":"Patch Set 7:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I653398ac2de2fe5bdf738aeae2ece0f643f0a42d .","accounts_in_message":[],"_revision_number":7},{"id":"b3ebe44ea97d3eadd65a71286c69c96aa161fd49","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-13 17:09:22.000000000","message":"Patch Set 7: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/143f5013d3c0423cadc53f6cb0d0ce23\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/90cccb5db2bf403ca9f6ec743bb058a7 : SUCCESS in 1h 04m 32s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/f996f7540c204024b71a5dfc3dcd1c28 : SUCCESS in 2h 07m 51s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/5aa2a4c98f8e4ac998952a91ceb5344c : SUCCESS in 1h 07m 25s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0c6bf2ee1ad545f5b3f593c5b0c0973e : SUCCESS in 50m 32s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7965e37725cc4fb58dc0c06275f6b76d : SUCCESS in 7m 30s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/035932af440c42c5ad80cfe47de6ae24 : SUCCESS in 16m 31s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/28e6afde4ad94b8d8d74aab2ecabffe5 : SUCCESS in 14m 56s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5f0a9a4db9ad4897aac5cf56d90ee407 : SUCCESS in 22m 39s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e35c210c57774701a8de165f67a192eb : SUCCESS in 12m 10s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/3671660a3bee4e22b16745f2c0b0aeb0 : SUCCESS in 40m 27s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/5fe2c2c5ee6d462d8deea60470f99ca7 : SUCCESS in 1h 12m 54s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/952bdd097be54756813baba8dfbc6d5c : FAILURE in 1h 47m 15s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/015bda3d5b4a4e0fad95d34fae8688c4 : SUCCESS in 58m 10s\n- nova-vtpm https://zuul.opendev.org/t/openstack/build/339379875c1a4e7093922d504be6bf76 : SUCCESS in 36m 51s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/df9f11574cbe4895b1e4c7b94472bceb : SUCCESS in 1h 04m 39s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/d8228d95d75c4b76b2fe5a28ab170381 : SUCCESS in 42m 08s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/dd95d10af0dd49ff92d4fe765d4f236f : SUCCESS in 1h 08m 09s\n- nova-next https://zuul.opendev.org/t/openstack/build/316c23c299e3468d883e5e389e04ea5a : SUCCESS in 2h 30m 57s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/a368b2479c6c40aeab7e347dc0af4c12 : SUCCESS in 53m 10s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/e0504471583e4369893ae71d8829b67f : SUCCESS in 3m 14s (non-voting)\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/6e8cc91f45724859a7aaab5b68581869 : SUCCESS in 29m 27s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/73d6f82f8651482b9657b60288e14ef7 : SUCCESS in 26m 16s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/ba727ae03be74cc3b606b0aff4b3aa4e : SUCCESS in 1h 31m 12s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/fe653ee4bd4143bfa19cab81c7e4f5a2 : SUCCESS in 1h 01m 12s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/09505f7c7c124f15bbf9bd6c7015293d : SUCCESS in 30m 43s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/4c5c64846624486f9c4106e22cfcca96 : SUCCESS in 37m 29s (non-voting)\n- nova-tox-py313-threading https://zuul.opendev.org/t/openstack/build/9b53bc2b93954b6faedcdc12d32bdce7 : SUCCESS in 15m 09s","accounts_in_message":[],"_revision_number":7},{"id":"c1b1fe838efd034367bb6ba159bf24a9803c0e8e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-13 21:17:42.000000000","message":"Patch Set 7:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6d1ee0754e1c4803ac3101ca1906f4e4\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/b04ffd0230d24aa6958b4a6d4875dc46 : SUCCESS in 22m 02s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/6fe909baed1f42289adbfdde5082b4de : SUCCESS in 12m 40s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/75c9930656524ceaa4fd5b54e14f1796 : SUCCESS in 20m 52s (non-voting)","accounts_in_message":[],"_revision_number":7}],"current_revision_number":7,"current_revision":"8f761e0fffe954c981ade4332f517911b4649da9","revisions":{"b1d411173b9e089349bdb9535c5c3db6af7c9b51":{"kind":"REWORK","_number":1,"created":"2026-04-13 13:01:36.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/1"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 13:01:32.000000000","tz":60},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id:default in tenant aggregate placement filtering,\nallowing shared aggregates to be used by any project and to satisfy\nplacement_aggregate_required_for_tenants.\n\nBefore this change, when new projects are added, and you have a\nshared pool of hypervisors, you need to add every project into\nthat shared aggregate. This makes that easier and less error prone\nwhen projects are regularly being created/deleted that consume\nshared resources.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/b1d411173b9e089349bdb9535c5c3db6af7c9b51"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/b1d411173b9e089349bdb9535c5c3db6af7c9b51"}]},"branch":"refs/heads/master"},"5cd3b942dc14a3c524f8c7c01d9cbe215a9231b6":{"kind":"REWORK","_number":2,"created":"2026-04-13 13:29:52.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/2"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 13:29:39.000000000","tz":60},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id:all in tenant aggregate placement filtering,\nallowing shared aggregates to be used by any project and to satisfy\nplacement_aggregate_required_for_tenants.\n\nBefore this change, when new projects are added, and you have a\nshared pool of hypervisors, you need to add every project into\nthat shared aggregate. Supporting the project id \"all\",\nmakes that easier and less error prone when projects are\nregularly being created/deleted that consume\nshared resources.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/5cd3b942dc14a3c524f8c7c01d9cbe215a9231b6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/5cd3b942dc14a3c524f8c7c01d9cbe215a9231b6"}]},"branch":"refs/heads/master"},"3e8c3ca9f8c7826a5377cf8a80f4b2d2e8b10abb":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2026-04-13 13:32:06.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/3"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 13:31:36.000000000","tz":60},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id\u003dall in tenant aggregate placement filtering.\n\nThis preserves the existing tenant-specific metadata handling,\nincluding suffixed keys such as filter_tenant_id:1, while adding\nan exact shared marker that allows an aggregate to be used by any\nproject. When enabled, a shared aggregate also satisfies\nplacement_aggregate_required_for_tenants.\n\nBefore this change, operators with a shared pool of hypervisors had\nto keep every project listed in the aggregate metadata. Supporting a\nshared marker makes that setup easier to manage when projects are\nregularly created and deleted.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/3e8c3ca9f8c7826a5377cf8a80f4b2d2e8b10abb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/3e8c3ca9f8c7826a5377cf8a80f4b2d2e8b10abb"}]},"branch":"refs/heads/master"},"736509175980487065af48872abda4d8924239b8":{"kind":"REWORK","_number":4,"created":"2026-04-13 14:24:24.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/4"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 14:22:55.000000000","tz":60},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id\u003dall in tenant aggregate placement filtering.\n\nThis preserves the existing tenant-specific metadata handling,\nincluding suffixed keys such as filter_tenant_id:1, while adding\nan exact shared marker that allows an aggregate to be used by any\nproject. When enabled, a shared aggregate also satisfies\nplacement_aggregate_required_for_tenants.\n\nBefore this change, operators with a shared pool of hypervisors had\nto keep every project listed in the aggregate metadata. Supporting a\nshared marker makes that setup easier to manage when projects are\nregularly created and deleted.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/736509175980487065af48872abda4d8924239b8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/736509175980487065af48872abda4d8924239b8"}]},"branch":"refs/heads/master"},"da44747a3b62f1245f891a4b34078e5cf9fd4447":{"kind":"REWORK","_number":5,"created":"2026-04-13 14:29:50.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/5"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 14:29:39.000000000","tz":60},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id\u003dall in tenant aggregate placement filtering.\n\nThis preserves the existing tenant-specific metadata handling,\nincluding suffixed keys such as filter_tenant_id:1, while adding\nan exact shared marker that allows an aggregate to be used by any\nproject. When enabled, a shared aggregate also satisfies\nplacement_aggregate_required_for_tenants.\n\nBefore this change, operators with a shared pool of hypervisors had\nto keep every project listed in the aggregate metadata. Supporting a\nshared marker makes that setup easier to manage when projects are\nregularly created and deleted.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/da44747a3b62f1245f891a4b34078e5cf9fd4447"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/da44747a3b62f1245f891a4b34078e5cf9fd4447"}]},"branch":"refs/heads/master"},"efc02640491404284a44f7b6591dbf3091da8651":{"kind":"REWORK","_number":6,"created":"2026-04-13 14:34:26.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/6"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 14:34:16.000000000","tz":60},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id\u003dall in tenant aggregate placement filtering.\n\nThis preserves the existing tenant-specific metadata handling,\nincluding suffixed keys such as filter_tenant_id:1, while adding\nan exact shared marker that allows an aggregate to be used by any\nproject. When enabled, a shared aggregate also satisfies\nplacement_aggregate_required_for_tenants.\n\nBefore this change, operators with a shared pool of hypervisors had\nto keep every project listed in the aggregate metadata. Supporting a\nshared marker makes that setup easier to manage when projects are\nregularly created and deleted.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/efc02640491404284a44f7b6591dbf3091da8651"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/efc02640491404284a44f7b6591dbf3091da8651"}]},"branch":"refs/heads/master"},"8f761e0fffe954c981ade4332f517911b4649da9":{"kind":"REWORK","_number":7,"created":"2026-04-13 14:37:01.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/83/984383/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/83/984383/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/83/984383/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/83/984383/7"}}},"commit":{"parents":[{"commit":"124e88eb1df0ad504212d90b974c846ff5719a70","subject":"Merge \"Run graceful shutdown job in threading as well as in eventlet mode\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/124e88eb1df0ad504212d90b974c846ff5719a70"}]}],"author":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 09:44:46.000000000","tz":60},"committer":{"name":"John Garbutt","email":"john.garbutt@nscale.com","date":"2026-04-13 14:37:01.000000000","tz":0},"subject":"scheduler: support shared tenant placement aggregates","message":"scheduler: support shared tenant placement aggregates\n\nAdd an optional scheduler mode that includes aggregates marked with\nfilter_tenant_id\u003dall in tenant aggregate placement filtering.\n\nThis preserves the existing tenant-specific metadata handling,\nincluding suffixed keys such as filter_tenant_id:1, while adding\nan exact shared marker that allows an aggregate to be used by any\nproject. When enabled, a shared aggregate also satisfies\nplacement_aggregate_required_for_tenants.\n\nBefore this change, operators with a shared pool of hypervisors had\nto keep every project listed in the aggregate metadata. Supporting a\nshared marker makes that setup easier to manage when projects are\nregularly created and deleted.\n\nAdd unit and functional coverage for the shared-aggregate behavior\nand document it in a release note.\n\nAssisted-By: GPT-5 Codex \u003ccodex@openai.com\u003e\nChange-Id: I653398ac2de2fe5bdf738aeae2ece0f643f0a42d\nSigned-off-by: John Garbutt \u003cjohn.garbutt@nscale.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/8f761e0fffe954c981ade4332f517911b4649da9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/8f761e0fffe954c981ade4332f517911b4649da9"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","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":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
