)]}'
{"id":"openstack%2Fkeystone~995445","triplet_id":"openstack%2Fkeystone~master~Id28684b8c30163d5da6b5e523e7e0f4b07c9780b","project":"openstack/keystone","branch":"master","attention_set":{},"removed_from_attention_set":{"10273":{"account":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"last_update":"2026-07-01 02:09:17.000000000","reason":"Change was marked work in progress"}},"hashtags":[],"change_id":"Id28684b8c30163d5da6b5e523e7e0f4b07c9780b","subject":"Modernize DB queries to SQLAlchemy 2.0 style","status":"NEW","created":"2026-06-30 07:56:40.000000000","updated":"2026-07-02 09:15:38.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":5,"unresolved_comment_count":0,"work_in_progress":true,"has_review_started":true,"meta_rev_id":"bb57fa15caa9f13560db82c152c6a3d95660dfb7","_number":995445,"virtual_id_number":995445,"owner":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-07-01 21:59:51.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}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"reviewer_updates":[{"updated":"2026-06-30 08:57:06.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":"38135f4db201cc2fe000e7e389bce9631cdf2127","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 07:56:40.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"518e0bf7c57e41e2fc3d183d5018ffd913111f0b","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 08:35:54.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":1},{"id":"48900a28b255b9a04a5204e070e6091d7b868957","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 08:37:41.000000000","message":"Patch Set 1:\n\n(1 comment)\n\nThis change is ready for review.","accounts_in_message":[],"_revision_number":1},{"id":"639489df9442e4007e27071ef52fe94a1918e098","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 08:57:06.000000000","message":"Patch Set 1: 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/fdbe293ae89549089a4a955b644f09a6\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/04e59069de8a488d9a66a330407d8f69 : FAILURE in 14m 00s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ba048fd14338414eb8fc7445de03b66f : FAILURE in 4m 51s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/b346ec77af91417aadeac137f802fd50 : FAILURE in 14m 22s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/e45e49c171724dd4838035c8a2ad7cdb : FAILURE in 14m 47s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b2c22bd3743a46c89f7fb783ef69aff1 : FAILURE in 16m 34s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fec3760e84cb4fbab1ec0169d25fa270 : SUCCESS in 12m 57s\n- grenade https://zuul.opendev.org/t/openstack/build/53db9886a8b045429dd6c61757f06b38 : FAILURE in 54m 48s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/c4cee6bd537349a0af5eaa81d7577489 : FAILURE in 9m 13s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/29077e59bd914f7db8d3cad76a2d32a4 : SUCCESS in 13m 11s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/efe94f90f13e492285c40dd69ac21211 : POST_FAILURE in 7m 50s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/452a289ed7004c71be4efa0e27aa5e70 : FAILURE in 8m 52s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/a914e9dec1e840e78eca461c5ffcb3e3 : FAILURE in 18m 10s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/4e1ca301200f4e18b4360520eb7d6909 : FAILURE in 15m 22s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/f0863dfe9dd4451d9d28bde47bb27dde : FAILURE in 14m 35s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/ab91867163fb44b18df5a952e7f399fb : FAILURE in 13m 15s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/70df8580db614e94943f9f40b27caaf0 : FAILURE in 9m 09s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/72c99898c46046f1a61bf19fedb8cfd2 : FAILURE in 8m 58s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/406b41a76a3f4cb9880399b5fb8b1f60 : FAILURE in 13m 27s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/8a3f5a9fbb764cceb0cbd8269ef0c38e : SUCCESS in 7m 19s (non-voting)\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":1},{"id":"169e5fff1e6ebc8a14a65a84d2cf8cacdab1c185","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 09:31:12.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2d4603740aa0414cb8f99f6e593434ba\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/5266d15be73749efa671499585b5f59b : FAILURE in 16m 35s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/09b7e7fe603a4a3f840f1200ebbe5f62 : FAILURE in 23m 13s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/a9fdf558bade4b3e87552389dbe8efcd : FAILURE in 38m 41s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"3a50149ca5a432638600433b1325272a0a8433bc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 18:26:43.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"7fc97cf460c8f6234d1c3ad349730448dd8b2b48","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 18:56:52.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6ec005f1068f49b7b807e04eafdd7d32\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/a9829552fc53465abbc9c2ccba6a49bb : FAILURE in 12m 38s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/d083bf1f98e24d22966ec99c84d6fc32 : FAILURE in 15m 25s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/6a6e6ea27e084769823af4712d9d433a : FAILURE in 28m 10s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"ac5499e998cb700cc60ccbe7edc75628e0c8159e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 18:57:04.000000000","message":"Patch Set 2: 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/843ee359d685431287cd733f3e23f57d\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/4112e90540234ebfa208bf576d0cf235 : FAILURE in 12m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/95ca5d8e862f4b9c916cb5c389a0d2e6 : SUCCESS in 5m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/c975e5ce995d4227901e97536ad2c836 : FAILURE in 6m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/715caa304e284cfcbdbde42fe71c80fc : FAILURE in 9m 05s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5a65d08afb614ce0856ebda0e7a5f9ea : FAILURE in 8m 40s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1bf556954f634beeba63beedb3fa9c96 : SUCCESS in 13m 55s\n- grenade https://zuul.opendev.org/t/openstack/build/ae85711eb6f24564a0f1aa1fd09cd1b9 : FAILURE in 28m 53s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/e2ea8156f2404f52ae93f743f389062c : FAILURE in 16m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/144f84ce859f4fc79811105f763ff5b9 : SUCCESS in 4m 45s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/dfee724e8cce4ae5a4a215548e29f824 : POST_FAILURE in 8m 05s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/0ecbdf1d70f249d8a00cf6414f8d8cdb : FAILURE in 10m 41s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/ac3c22bd532c4b3cb9ee70f96a27eebd : FAILURE in 13m 36s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/7e4aed3cf1954e409b9d9ff5cc3fd39f : FAILURE in 12m 10s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/42ee4f4b609b45f1aca65c8183954bee : FAILURE in 18m 12s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/a5585bac2130436c97f09dbc9c63de8a : FAILURE in 11m 35s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/248a9c9db74d45289e2951c2503f76c8 : FAILURE in 21m 46s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ef840d7538de4813ad75af0ae47756d1 : FAILURE in 9m 13s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/f7da414dc3d24d218bc11e689059571c : FAILURE in 9m 46s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/abcdf4c4d5354888acd83a292a0912b9 : SUCCESS in 4m 19s (non-voting)\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":2},{"id":"2d96a6e440486f5fa9f817ce2510979ac4507379","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-01 02:09:17.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":2},{"id":"429085df6e2c9b6686d1f7627d54ca0288078012","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-01 03:08:35.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"2acd61ed8166077365da5054959ea879f1a80280","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 04:22:24.000000000","message":"Patch Set 3:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d579bd0126b842b4b0c24ee7d08f1fc3\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/f41eff09c6864e2ca5b6190afcc91e29 : FAILURE in 21m 12s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/df6558291bc045dbbc42e64b6f221a85 : FAILURE in 21m 51s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/142fce7d9e694fbab33acba299038c8d : FAILURE in 21m 53s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"1e133dcf7a4a7ae7528d7812ec1c1eaec71f1dd5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 04:54:01.000000000","message":"Patch Set 3: 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/333474c717c2401ba03a5bb350e67820\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/ae0e2055873243899f0c57b70c185194 : FAILURE in 13m 48s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7f65c041ed7149689a1b81e6391dfe17 : SUCCESS in 3m 48s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1a5ec134b0db4e61a7dbbdef537a406f : FAILURE in 7m 00s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/364048a743d64eb5bec3f78e04aa94ad : FAILURE in 11m 43s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6e76e4ca49a14c959b5e8ecdbec17b22 : FAILURE in 16m 34s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fd06aeb15b96460abbee563fa7a53948 : SUCCESS in 11m 31s\n- grenade https://zuul.opendev.org/t/openstack/build/69611e2b6c6440e0bb9a86fa039fc4ae : SUCCESS in 1h 08m 14s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/51863b8a1fb945faa7c5602bd308cb84 : SUCCESS in 1h 42m 50s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a89e73f34cdf408c94f464014390edb8 : SUCCESS in 12m 39s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/3243537d1d7a43f8b1c17db521319d1b : SUCCESS in 9m 02s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/d75b46d5f27840c4b9c26128c7434668 : SUCCESS in 49m 49s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/1609bc18cc2945ce80d71ab9286d0502 : FAILURE in 11m 08s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/70ec2953a73b4978903995430d770fc4 : FAILURE in 19m 43s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/820448ff32314f5c9143fb45da8b4040 : SUCCESS in 1h 08m 08s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/ae6f4be01ae74e8298f1ef89aaef8e3e : SUCCESS in 23m 00s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/9c64f28044664f9da133b17df1e49822 : SUCCESS in 37m 41s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/bdc5a7afc3ec4b6787a9dd852635bdef : SUCCESS in 1h 02m 27s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/085ef0160eb841a5a24dd52a65ece11a : SUCCESS in 32m 32s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/4f1b788e4dce4035aa4c19c67f7e9272 : SUCCESS in 7m 24s (non-voting)\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":3},{"id":"3afccc1e98d3c52233a54fe2f95e5d8169ed837a","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-01 06:04:22.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"80f5047b4224f080e284fafef43a9a900d9c6a28","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 06:37:59.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7b72040997cc4a6587c9b80d01c04ee4\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/67495996c41d4f1990fa98f1568e24d2 : FAILURE in 15m 37s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/82e17729c74f4f83af3a9411f3dddab4 : FAILURE in 13m 14s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/4ab61f7b60e34a2ea1fadeb12fcdb9c9 : FAILURE in 23m 20s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"4bfcb9c00990dbdbed4882511f714c8f585ef19a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 07:50:19.000000000","message":"Patch Set 4: 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/455e7c3f2eb94aed917deb3c53994c16\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bc8e62f07a1e4da7a528a57d78d59b21 : FAILURE in 10m 13s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1501d382f4ac45cda63cf9f7317adafb : SUCCESS in 5m 25s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/b4995acef9e84ebfa268629b05009e23 : FAILURE in 8m 44s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/54a799265dc54f398a8049b714d43fc0 : FAILURE in 6m 45s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/2b07eb5ef49c4882bd3d8cefcc4bb9df : FAILURE in 14m 24s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/71908400d70749438be6f71e45c2a977 : SUCCESS in 15m 04s\n- grenade https://zuul.opendev.org/t/openstack/build/fa1aeebfc7f24ee48d04aea8c253b4d1 : SUCCESS in 1h 05m 19s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/8e52beaca1614b07bd8d1660472765a4 : SUCCESS in 1h 41m 11s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/aea529b4eb9f4fd5b36cbedb19f58e3a : SUCCESS in 9m 27s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/8b8be548794b45c98c7943830d6626b6 : SUCCESS in 9m 13s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/945aed2cd2de4d08b788ff62d69e21ca : SUCCESS in 47m 16s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/c928b6e9540f44509e6e47d534af2a8f : FAILURE in 22m 25s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/810f289ac4b848eb9b66ad0f9ed1c51a : FAILURE in 24m 02s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/f980235f0f2b4e3fb60d0fed754258e5 : SUCCESS in 48m 36s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/1fa7a81b436943f28d5cfe2458f46cce : FAILURE in 49m 22s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/cec7d6153fae45468e8c711912b2fbff : SUCCESS in 28m 39s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/0b19949ecbdf4cc2aae6e97e40d9ee91 : SUCCESS in 1h 04m 09s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/e3cd8441da6847c395896437ffda0b03 : SUCCESS in 46m 30s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/e4b6f0d6126f4332809616bf9671e9c8 : SUCCESS in 7m 10s (non-voting)\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":4},{"id":"f7101217edcfe67e2e7e4070ce636e3a7ac7a2dc","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-01 20:04:15.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"8fb11de553c826ad2346981b209f37965edfea21","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 20:49:45.000000000","message":"Patch Set 5:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/14060e5877324e06adae10606abc18e5\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/10b5031b85ae49a296977b1812474168 : SUCCESS in 25m 13s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/3a6bfbaffce54c66849c5edcccef8642 : SUCCESS in 20m 42s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/a4ce4cd5d5264e00821451555eda5374 : SUCCESS in 35m 12s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"4cc5a4d8b418ed4a5c6f164d4a3f3bb6a434eb7e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 21:59:51.000000000","message":"Patch Set 5: Verified-1\n\n(2 comments)\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/27a15fe1b43a4f3fa91ad406c8a97a3c\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/ad5e272fc16640968292daf22aff77e2 : SUCCESS in 11m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/26230bdd477c41828f08be69684f0ca5 : FAILURE in 3m 23s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/0039840e72e24d89b7a48014f0daf2b0 : SUCCESS in 11m 26s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/72a6c49edf724d7eb6b26bba1ca9963a : SUCCESS in 7m 05s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/02dfcb713dc8415dbb70a52c2286333f : SUCCESS in 13m 57s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8b32d6945725417aaf27804a53bea2b2 : SUCCESS in 14m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/da6391e78d834d69811522c4bbfa7f95 : SUCCESS in 35m 16s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/2f3f37b6c82040b28f2e9d85e3a936eb : SUCCESS in 1h 46m 43s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/eae3864f6ef0447e873c94f25fdb7377 : SUCCESS in 8m 51s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/5b7af297d2c147899940775ed1c27681 : SUCCESS in 18m 42s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/13adeffe1755479c9572a18bdc9105b6 : SUCCESS in 41m 17s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/5a9ad6dffce848e49c50e9e54656a5da : FAILURE in 15m 19s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/c7fd3500197846e7916c0a1bee5bd753 : FAILURE in 25m 57s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/7d82c054613a434f968116f85d0d9c9e : SUCCESS in 48m 52s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/3f585d655a014075aa87da35ae4d3da6 : FAILURE in 54m 20s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/667e8e24835744c0b8727cde0860e74a : SUCCESS in 37m 38s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/dea8b93320aa4627b31aefc936bff7fb : SUCCESS in 35m 26s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/2712825026734beba041cdfd379a8215 : SUCCESS in 31m 54s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/9ff23929676b43d7b469086ae585a766 : SUCCESS in 7m 20s (non-voting)\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":5},{"id":"fb74ddecf553a8c260fa0c5781a6fa45be6f7226","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-02 07:26:18.000000000","message":"Patch Set 5:\n\nrecheck (keystone-tempest-oidc-federation is a pre-existing flake — MySQL access denied + OVN hash-ring issue on the CI node, not related to SA 2.0 query changes)","accounts_in_message":[],"_revision_number":5},{"id":"b08c79b9d0c32ecf2d7f0a3cc965a4438ac78156","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-02 07:59:42.000000000","message":"Patch Set 5:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2d0cc96ad20d4719b5e839201c13b864\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/f91967454e4f49608a315ff53770706b : SUCCESS in 21m 52s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/6d62e986481842dd8a4b2c180c6a642e : SUCCESS in 22m 00s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/d3432f9c44154b4ab446a723b059a890 : SUCCESS in 30m 48s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"bb57fa15caa9f13560db82c152c6a3d95660dfb7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-02 09:15:38.000000000","message":"Patch Set 5:\n\n(2 comments)\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/54d2ba7fceb1419190bf8f8889b5809a\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/175348e89eea427f9fab38d4906f743b : SUCCESS in 15m 45s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/308829186b7941b59e6441594873f14f : FAILURE in 2m 47s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/4d7157e6fd69446dbcf681be9c7737ce : SUCCESS in 12m 04s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/da216503c5de4a64a897c63ef5f0408c : SUCCESS in 10m 20s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/1d3db3c617fc450292de596f58585b35 : SUCCESS in 14m 46s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9b023a6edf5c47688e89eb60d6e78b3c : SUCCESS in 14m 02s\n- grenade https://zuul.opendev.org/t/openstack/build/c2d4c79bb1e741e2b12372b28d3124d2 : SUCCESS in 1h 06m 23s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/8600343758a1463c92309b42fe311eda : SUCCESS in 1h 43m 56s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/802cb5726da84c9a818c5683b5b7636b : SUCCESS in 9m 44s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/4741152b00a34d2181127faef44d2003 : SUCCESS in 9m 21s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/efd33e030aff41e8b7cb3118ea530696 : SUCCESS in 38m 36s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/bac134c4dfee4bf5a9fa8de805926602 : FAILURE in 23m 20s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/288389daa8824d21a724f1ed87cfc34d : FAILURE in 27m 17s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/4720492ef90f4311991b1ac39d2a88d7 : FAILURE in 47m 43s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/ebf3e883c1724cee8f1ee9e1b85f91e1 : FAILURE in 51m 15s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/7abb39d373f8427b9c02bfda6af248bd : SUCCESS in 41m 56s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/2475290643f343cf9b11a1208590bb14 : SUCCESS in 49m 28s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/e35321a0cceb42ff821a6ec32abaf3bc : FAILURE in 45m 18s\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/1390eef71c6541179277323beb00eb13 : SUCCESS in 7m 54s (non-voting)\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"211f01f845af9960695d2915326ea178e0f34c8d","revisions":{"c576439ca56b3929c608c7fddfaefc30797855ea":{"kind":"REWORK","_number":1,"created":"2026-06-30 07:56:40.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/45/995445/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/45/995445/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/45/995445/1"}}},"commit":{"parents":[{"commit":"4172e784581e71b468325c05f4e9023c0fefd9b5","subject":"Materialize limit backend queries in read sessions","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4172e784581e71b468325c05f4e9023c0fefd9b5"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 07:56:10.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 07:56:22.000000000","tz":-240},"subject":"Modernize DB queries to SQLAlchemy 2.0 style","message":"Modernize DB queries to SQLAlchemy 2.0 style\n\nMigrate all backend SQL files from the deprecated SQLAlchemy\nQuery API (session.query()) to the SQLAlchemy 2.0 select()\nstyle (session.execute(sa.select(...))).\n\nThe legacy Query API is deprecated since SQLAlchemy 1.4 and\nwill be removed in a future SQLAlchemy release. The 2.0 style\nis the supported forward path and required for any future use\nof async database sessions.\n\nChanges across 18 backend files:\n- session.query(Model) -\u003e sa.select(Model) + session.execute()\n- .filter_by(x\u003dy) -\u003e .where(Model.x \u003d\u003d y)\n- .filter(expr) -\u003e .where(expr)\n- query.all() -\u003e session.execute(stmt).scalars().all()\n- query.first() -\u003e session.execute(stmt).scalars().first()\n- query.one() -\u003e session.execute(stmt).scalars().one()\n- query.delete() -\u003e session.execute(sa.delete(Model).where(...))\n- query.update() -\u003e session.execute(sa.update(Model).where(...).values(...))\n\nOne exception: resource/backends/sql.py check_project_depth()\nretains session.query() due to multi-entity aliased self-join\nthat cannot be expressed with sa.select().\n\nThe filter_limit_query helper in common/sql/core.py is updated\nto work with both Query and Select objects during transition.\n\nNo functional changes. All existing tests pass unchanged.\n\nChange-Id: Id28684b8c30163d5da6b5e523e7e0f4b07c9780b\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/c576439ca56b3929c608c7fddfaefc30797855ea"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/c576439ca56b3929c608c7fddfaefc30797855ea"}]},"branch":"refs/heads/master"},"3a1ed834b7a438db48ae82f7c9ce51c2753536eb":{"kind":"REWORK","_number":2,"created":"2026-06-30 18:26:43.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/45/995445/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/45/995445/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/45/995445/2"}}},"commit":{"parents":[{"commit":"4172e784581e71b468325c05f4e9023c0fefd9b5","subject":"Materialize limit backend queries in read sessions","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4172e784581e71b468325c05f4e9023c0fefd9b5"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 07:56:10.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 18:26:41.000000000","tz":-240},"subject":"Modernize DB queries to SQLAlchemy 2.0 style","message":"Modernize DB queries to SQLAlchemy 2.0 style\n\nMigrate all backend SQL files from the deprecated SQLAlchemy\nQuery API (session.query()) to the SQLAlchemy 2.0 select()\nstyle (session.execute(sa.select(...))).\n\nThe legacy Query API is deprecated since SQLAlchemy 1.4 and\nwill be removed in a future SQLAlchemy release. The 2.0 style\nis the supported forward path and required for any future use\nof async database sessions.\n\nChanges across 18 backend files:\n- session.query(Model) -\u003e sa.select(Model) + session.execute()\n- .filter_by(x\u003dy) -\u003e .where(Model.x \u003d\u003d y)\n- .filter(expr) -\u003e .where(expr)\n- query.all() -\u003e session.execute(stmt).scalars().all()\n- query.first() -\u003e session.execute(stmt).scalars().first()\n- query.one() -\u003e session.execute(stmt).scalars().one()\n- query.delete() -\u003e session.execute(sa.delete(Model).where(...))\n- query.update() -\u003e session.execute(sa.update(Model).where(...).values(...))\n\nOne exception: resource/backends/sql.py check_project_depth()\nretains session.query() due to multi-entity aliased self-join\nthat cannot be expressed with sa.select().\n\nThe filter_limit_query helper in common/sql/core.py is updated\nto work with both Query and Select objects during transition.\n\nNo functional changes. All existing tests pass unchanged.\n\nChange-Id: Id28684b8c30163d5da6b5e523e7e0f4b07c9780b\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/3a1ed834b7a438db48ae82f7c9ce51c2753536eb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/3a1ed834b7a438db48ae82f7c9ce51c2753536eb"}]},"branch":"refs/heads/master"},"07c5bfceba11b02f9b203e6c3ab1e7419a35faa2":{"kind":"REWORK","_number":3,"created":"2026-07-01 03:08:35.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/45/995445/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/45/995445/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/45/995445/3"}}},"commit":{"parents":[{"commit":"4172e784581e71b468325c05f4e9023c0fefd9b5","subject":"Materialize limit backend queries in read sessions","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4172e784581e71b468325c05f4e9023c0fefd9b5"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 07:56:10.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-07-01 03:08:31.000000000","tz":-240},"subject":"Modernize DB queries to SQLAlchemy 2.0 style","message":"Modernize DB queries to SQLAlchemy 2.0 style\n\nMigrate all backend SQL files from the deprecated SQLAlchemy\nQuery API (session.query()) to the SQLAlchemy 2.0 select()\nstyle (session.execute(sa.select(...))).\n\nThe legacy Query API is deprecated since SQLAlchemy 1.4 and\nwill be removed in a future SQLAlchemy release. The 2.0 style\nis the supported forward path and required for any future use\nof async database sessions.\n\nChanges across 18 backend files:\n- session.query(Model) -\u003e sa.select(Model) + session.execute()\n- .filter_by(x\u003dy) -\u003e .where(Model.x \u003d\u003d y)\n- .filter(expr) -\u003e .where(expr)\n- query.all() -\u003e session.execute(stmt).scalars().all()\n- query.first() -\u003e session.execute(stmt).scalars().first()\n- query.one() -\u003e session.execute(stmt).scalars().one()\n- query.delete() -\u003e session.execute(sa.delete(Model).where(...))\n- query.update() -\u003e session.execute(sa.update(Model).where(...).values(...))\n\nOne exception: resource/backends/sql.py check_project_depth()\nretains session.query() due to multi-entity aliased self-join\nthat cannot be expressed with sa.select().\n\nThe filter_limit_query helper in common/sql/core.py is updated\nto work with both Query and Select objects during transition.\n\nNo functional changes. All existing tests pass unchanged.\n\nChange-Id: Id28684b8c30163d5da6b5e523e7e0f4b07c9780b\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/07c5bfceba11b02f9b203e6c3ab1e7419a35faa2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/07c5bfceba11b02f9b203e6c3ab1e7419a35faa2"}]},"branch":"refs/heads/master"},"9abbad96922614d9e2adb4cf4c45610388e47ca2":{"kind":"REWORK","_number":4,"created":"2026-07-01 06:04:22.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/45/995445/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/45/995445/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/45/995445/4"}}},"commit":{"parents":[{"commit":"4172e784581e71b468325c05f4e9023c0fefd9b5","subject":"Materialize limit backend queries in read sessions","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4172e784581e71b468325c05f4e9023c0fefd9b5"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 07:56:10.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-07-01 06:04:19.000000000","tz":-240},"subject":"Modernize DB queries to SQLAlchemy 2.0 style","message":"Modernize DB queries to SQLAlchemy 2.0 style\n\nMigrate all backend SQL files from the deprecated SQLAlchemy\nQuery API (session.query()) to the SQLAlchemy 2.0 select()\nstyle (session.execute(sa.select(...))).\n\nThe legacy Query API is deprecated since SQLAlchemy 1.4 and\nwill be removed in a future SQLAlchemy release. The 2.0 style\nis the supported forward path and required for any future use\nof async database sessions.\n\nChanges across 18 backend files:\n- session.query(Model) -\u003e sa.select(Model) + session.execute()\n- .filter_by(x\u003dy) -\u003e .where(Model.x \u003d\u003d y)\n- .filter(expr) -\u003e .where(expr)\n- query.all() -\u003e session.execute(stmt).scalars().all()\n- query.first() -\u003e session.execute(stmt).scalars().first()\n- query.one() -\u003e session.execute(stmt).scalars().one()\n- query.delete() -\u003e session.execute(sa.delete(Model).where(...))\n- query.update() -\u003e session.execute(sa.update(Model).where(...).values(...))\n\nOne exception: resource/backends/sql.py check_project_depth()\nretains session.query() due to multi-entity aliased self-join\nthat cannot be expressed with sa.select().\n\nThe filter_limit_query helper in common/sql/core.py is updated\nto work with both Query and Select objects during transition.\n\nNo functional changes. All existing tests pass unchanged.\n\nChange-Id: Id28684b8c30163d5da6b5e523e7e0f4b07c9780b\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/9abbad96922614d9e2adb4cf4c45610388e47ca2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/9abbad96922614d9e2adb4cf4c45610388e47ca2"}]},"branch":"refs/heads/master"},"211f01f845af9960695d2915326ea178e0f34c8d":{"kind":"REWORK","_number":5,"created":"2026-07-01 20:04:15.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/45/995445/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/45/995445/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/45/995445/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/45/995445/5"}}},"commit":{"parents":[{"commit":"4172e784581e71b468325c05f4e9023c0fefd9b5","subject":"Materialize limit backend queries in read sessions","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4172e784581e71b468325c05f4e9023c0fefd9b5"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-30 07:56:10.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-07-01 07:24:14.000000000","tz":-240},"subject":"Modernize DB queries to SQLAlchemy 2.0 style","message":"Modernize DB queries to SQLAlchemy 2.0 style\n\nMigrate all backend SQL files from the deprecated SQLAlchemy\nQuery API (session.query()) to the SQLAlchemy 2.0 select()\nstyle (session.execute(sa.select(...))).\n\nThe legacy Query API is deprecated since SQLAlchemy 1.4 and\nwill be removed in a future SQLAlchemy release. The 2.0 style\nis the supported forward path and required for any future use\nof async database sessions.\n\nChanges across 18 backend files:\n- session.query(Model) -\u003e sa.select(Model) + session.execute()\n- .filter_by(x\u003dy) -\u003e .where(Model.x \u003d\u003d y)\n- .filter(expr) -\u003e .where(expr)\n- query.all() -\u003e session.execute(stmt).scalars().all()\n- query.first() -\u003e session.execute(stmt).scalars().first()\n- query.one() -\u003e session.execute(stmt).scalars().one()\n- query.delete() -\u003e session.execute(sa.delete(Model).where(...))\n- query.update() -\u003e session.execute(sa.update(Model).where(...).values(...))\n\nOne exception: resource/backends/sql.py check_project_depth()\nretains session.query() due to multi-entity aliased self-join\nthat cannot be expressed with sa.select().\n\nThe filter_limit_query helper in common/sql/core.py is updated\nto work with both Query and Select objects during transition.\n\nNo functional changes. All existing tests pass unchanged.\n\nChange-Id: Id28684b8c30163d5da6b5e523e7e0f4b07c9780b\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/211f01f845af9960695d2915326ea178e0f34c8d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/211f01f845af9960695d2915326ea178e0f34c8d"}]},"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"}]}],"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":"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":""}}}]}
