)]}'
{"id":"openstack%2Fplacement~995133","triplet_id":"openstack%2Fplacement~master~I319bd64055852c63d48c9d81c62fe2b6315960dd","project":"openstack/placement","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-06-26 19:41:55.000000000","reason":"removed on reply"}},"hashtags":["asgi","asgi-phase-0"],"change_id":"I319bd64055852c63d48c9d81c62fe2b6315960dd","subject":"Add ASGI application entry point for Placement API","status":"NEW","created":"2026-06-26 19:10:37.000000000","updated":"2026-07-01 08:31:52.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":"bd2424b17926769234430ec2107872d8e1257e99","_number":995133,"virtual_id_number":995133,"owner":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-07-01 06:00:14.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":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-26 19:14:01.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":"162219fb4437a23dee4f436f3afe89263d9f661c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 19:10:37.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"3369155ee830aa806a8d1a57ae2f7f8e7f2596c6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-26 19:14:01.000000000","message":"Patch Set 1: Verified-1\n\nThis change depends on a change that failed to merge.\n\nChanges https://review.opendev.org/c/openstack/oslo.service/+/995128, https://review.opendev.org/c/openstack/devstack/+/995132 are needed.","accounts_in_message":[],"_revision_number":1},{"id":"1ef6618747c3d59449deff37c23d3d5367f0be10","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 19:41:55.000000000","message":"Patch Set 1:\n\nrecheck","accounts_in_message":[],"_revision_number":1},{"id":"257bab1b0c0c879b8e5cbba74b22458c37d695ff","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 19:48:17.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":1},{"id":"8d3d07c568b1fbbd18c6be433388752de1a4ff7a","tag":"autogenerated:gerrit:setHashtag","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 19:48:18.000000000","message":"Hashtag added: asgi","accounts_in_message":[],"_revision_number":1},{"id":"84e3c2a48d366a4413427730dcce8eb950909cc5","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 20:21:13.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"24f85f88395c1172372f9eb66348b80d0787293e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-26 22:21:43.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/e9f2733e2f3644aca89cf823919f0c44\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/45df1f752b024876ba1a4cabbdb7d969 : SUCCESS in 4m 55s\n- grenade https://zuul.opendev.org/t/openstack/build/243f496bd9c747718a8aa698f587492c : SUCCESS in 1h 03m 17s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/bfc6174ebdd049629a119fb7a6823596 : SUCCESS in 1h 03m 44s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/8a7c1caba99d48d19546c91f94d50eea : SUCCESS in 1h 53m 32s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/49ca466f690e4a96b90a48f4fc5b8433 : SUCCESS in 1h 15m 16s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/be9a268313024855bec2d3b0c118fc09 : SUCCESS in 14m 37s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/dc2018829e4341bda34b20085841bd15 : SUCCESS in 3m 21s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/b22718606472497680954f6c8ac50463 : SUCCESS in 2m 30s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d1bec155e44f4ea99e1b5259f1222fcb : SUCCESS in 3m 54s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/3910154905b24751983e1ac6282d8951 : FAILURE in 7m 33s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3bf8f48bb4994401905e23e27728aa07 : SUCCESS in 4m 55s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/e3327116dbd74506a34e07353510c771 : SUCCESS in 9m 33s\n- openstack-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/9f56075d85eb47d3a7180c4749a927bc : SUCCESS in 5m 20s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/bd5354ee5ba74552a28d9e4b3d2b7bd3 : SUCCESS in 5m 16s\n- openstack-tox-functional-py314 https://zuul.opendev.org/t/openstack/build/6f1383221c464f1db4d38d85964124ca : SUCCESS in 8m 52s (non-voting)\n- placement-nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/b33d9fe8aa694adc87adc0081de14fc9 : SUCCESS in 21m 36s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/dea1ed91b73040e49b3f1ec50e80539c : FAILURE in 2m 17s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/a7a44d04608a498aad9472e1df4730a5 : FAILURE in 3m 18s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/4e024238afee42708a34f7cebafebaaf : SUCCESS in 55m 33s\n- tempest-integrated-placement-asgi https://zuul.opendev.org/t/openstack/build/eaa3bc27cd9b4f839669df546afe64ef : FAILURE in 11m 41s","accounts_in_message":[],"_revision_number":2},{"id":"827861d7d37e6a3a2ad41b33ff855fdb6657e4a8","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 23:28:42.000000000","message":"Patch Set 2:\n\nrecheck","accounts_in_message":[],"_revision_number":2},{"id":"dd08e1b716193f9c1e83133e83ba9887f1b4907e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-26 23:53:43.000000000","message":"Patch Set 2:\n\nThis change depends on a change that failed to merge.\n\nChange https://review.opendev.org/c/openstack/devstack/+/995132 is needed.","accounts_in_message":[],"_revision_number":2},{"id":"eee15a54282d6777f26cce9873d4016a16ee2129","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 23:56:08.000000000","message":"Patch Set 2:\n\nrecheck: fixed ports (devstack ps4)","accounts_in_message":[],"_revision_number":2},{"id":"4a0d5c853a8d85252280c27461dad96d7c364f04","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 01:27:04.000000000","message":"Patch Set 2:\n\nThis change depends on a change that failed to merge.\n\nChange https://review.opendev.org/c/openstack/devstack/+/995132 is needed.","accounts_in_message":[],"_revision_number":2},{"id":"e96bbc4871c4e7aa2b258475c327e780d60a8643","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 01:30:02.000000000","message":"Patch Set 2:\n\nrecheck","accounts_in_message":[],"_revision_number":2},{"id":"5bf7024a965ad3f3e1e12d68c403b0d1bd518dc2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 02:23:46.000000000","message":"Patch Set 2:\n\nThis change depends on a change that failed to merge.\n\nChanges https://review.opendev.org/c/openstack/oslo.service/+/995128, https://review.opendev.org/c/openstack/devstack/+/995132 are needed.","accounts_in_message":[],"_revision_number":2},{"id":"59b6182d262295ed22167c158b7e1708b83cf2fe","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 03:27:19.000000000","message":"Patch Set 2:\n\nrecheck","accounts_in_message":[],"_revision_number":2},{"id":"9f58ac7e9a570bd04c70c674448b55a74b5e2e1d","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 03:34:28.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"6f615edef8b77409e9933af384c1ae3152662baf","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 03:58:51.000000000","message":"Patch Set 3:\n\nrecheck","accounts_in_message":[],"_revision_number":3},{"id":"22584ec789bb0e37e911384ed4e8299df8b44e26","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 04:11:19.000000000","message":"Patch Set 3:\n\nrecheck","accounts_in_message":[],"_revision_number":3},{"id":"5253d1ec65a4baba087e53ccd42345ffc901e21c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 04:20:23.000000000","message":"Patch Set 3: Verified-1\n\nThis change depends on a change that failed to merge.\n\nChange https://review.opendev.org/c/openstack/devstack/+/995132 is needed.","accounts_in_message":[],"_revision_number":3},{"id":"4339a16ce709a0678fcadb740a85d3015f7c68e1","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 04:53:09.000000000","message":"Patch Set 3:\n\nrecheck","accounts_in_message":[],"_revision_number":3},{"id":"6e2440e231b27b8d1446bbd6e3f6f28d0fceb946","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 05:59:56.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/be788165c799447eaa858b4fb5574a1f\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/1cf9c73808e34951a20b378c2a4c1a7f : SUCCESS in 2m 14s\n- tempest-integrated-placement-asgi https://zuul.opendev.org/t/openstack/build/d242e99be1e64d66a72182ab1de65326 : SUCCESS in 58m 37s","accounts_in_message":[],"_revision_number":3},{"id":"f7f2b423e13dd0c3c3f1c797d4c816b7507ad6b2","tag":"autogenerated:gerrit:setHashtag","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 00:27:18.000000000","message":"Hashtag added: asgi-phase-0","accounts_in_message":[],"_revision_number":3},{"id":"6a9bc43183b329760e119305495eed6614428832","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 00:29:13.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"a6870f678d973e59f8786821753b9fd394ffef06","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 01:36:20.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e9fa31e791534235b13663f68b3a732b\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/5921d4cdef1649a49daff0dd0bc92040 : SUCCESS in 3m 23s\n- tempest-integrated-placement-asgi https://zuul.opendev.org/t/openstack/build/dc45546e95ba4da4bdb6409a8cbecc2b : SUCCESS in 1h 03m 49s","accounts_in_message":[],"_revision_number":4},{"id":"1bee0adb59522f17857b0742dde3585edee1508d","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-01 04:08:43.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"2228ca5e87ff1d412dfa406ece80f5abc496e688","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 06:00:14.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/50fbf12bbf8e47ca84fde387fbfbbf48\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/e5850e0c4ead4bcf9d581122affcc72c : SUCCESS in 3m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/5ff514ecc25a44c3ada0d6875e37b636 : SUCCESS in 1h 06m 52s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/125b51ba61164c68b12eac66cb54b2e0 : SUCCESS in 33m 40s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/815faa84dfcd4a5c8358cdede60b71b2 : SUCCESS in 1h 43m 19s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/adb63a7691da4299929f95dad04384c4 : SUCCESS in 38m 07s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/5bea124459914624a1a784f26a67cf69 : SUCCESS in 15m 28s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/93e58d5dd4ef43189f4fd38e8ce4d925 : SUCCESS in 5m 16s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/b2532f4502994bc79cb656f6262d9e62 : SUCCESS in 4m 17s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/cb6be4bda11a42568b14a4eed50b2258 : SUCCESS in 4m 35s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/4adc41fa458947a583a5b9972d57b0da : FAILURE in 4m 38s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e8db37f5d93e4fca9a4ee67f6fad6856 : SUCCESS in 8m 26s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/88af3b4dea4647d9acd0a08e25654602 : SUCCESS in 9m 48s\n- openstack-tox-functional-py311 https://zuul.opendev.org/t/openstack/build/6376c96fbd41472b8fd546c95cbe8500 : SUCCESS in 4m 12s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/6cf22a3f8c5f4d00b402f674b152bea5 : SUCCESS in 6m 15s\n- openstack-tox-functional-py314 https://zuul.opendev.org/t/openstack/build/18bfad68d9c04ec0bc3b03e0441ba993 : SUCCESS in 5m 28s (non-voting)\n- placement-nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/7a7b280b2ff142a798acc02bbc89530d : SUCCESS in 21m 19s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/a12ef57b910c42aa99d0dce72fe97b08 : FAILURE in 2m 30s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/20511e1b253446058891500456c7c4d2 : FAILURE in 2m 29s (non-voting)\n- tempest-integrated-placement-asgi https://zuul.opendev.org/t/openstack/build/dbbd9f9a19724e0f97c347051468b67a : SUCCESS in 1h 27m 22s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/48624add24924efd8b8c838bb1d88995 : SUCCESS in 46m 26s","accounts_in_message":[],"_revision_number":5},{"id":"bd2424b17926769234430ec2107872d8e1257e99","tag":"autogenerated:gerrit:setReadyForReview","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-07-01 08:31:52.000000000","message":"Set Ready For Review","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"ce8980c3e4d7af7134b9c939025ff0cd021328e2","revisions":{"0e198e967ef1298da7ef0d32c972f6a7f99d6235":{"kind":"REWORK","_number":1,"created":"2026-06-26 19:10:37.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/33/995133/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/33/995133/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/33/995133/1"}}},"commit":{"parents":[{"commit":"7ad9ef078b490423ac6605e805fad2b75c8f2107","subject":"Merge \"Update policy scope enforcement testing\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/7ad9ef078b490423ac6605e805fad2b75c8f2107"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 15:14:34.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:10:30.000000000","tz":-240},"subject":"Add ASGI application entry point for Placement API","message":"Add ASGI application entry point for Placement API\n\nAdds placement.asgi.api:application, an ASGI entry point that wraps the\nexisting WSGI application using oslo_service.asgi.wrap_wsgi(). This\nenables serving the Placement API under modern ASGI servers such as\nHypercorn while preserving all middleware, authentication, and API\nbehavior unchanged.\n\nUsage:\n  $ hypercorn placement.asgi.api:application --bind 0.0.0.0:8778\n\nThe existing WSGI entry point (placement.wsgi.api:application) remains\navailable and unchanged for deployers using uwsgi, gunicorn, or mod_wsgi.\n\nASGI mode requires eventlet to be disabled. Placement already runs\nwithout eventlet by default, so no additional configuration is needed.\n\nAlso adds a voting tempest-integrated-placement-asgi gate job that runs\nthe full integrated placement tempest suite with the API served under\nHypercorn instead of uWSGI.\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I319bd64055852c63d48c9d81c62fe2b6315960dd\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0e198e967ef1298da7ef0d32c972f6a7f99d6235"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0e198e967ef1298da7ef0d32c972f6a7f99d6235"}]},"branch":"refs/heads/master"},"0b50b5933e16253c25a5fefd7fc52b3339498fe8":{"kind":"REWORK","_number":2,"created":"2026-06-26 20:21:13.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/33/995133/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/33/995133/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/33/995133/2"}}},"commit":{"parents":[{"commit":"7ad9ef078b490423ac6605e805fad2b75c8f2107","subject":"Merge \"Update policy scope enforcement testing\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/7ad9ef078b490423ac6605e805fad2b75c8f2107"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 15:14:34.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 20:21:07.000000000","tz":-240},"subject":"Add ASGI application entry point for Placement API","message":"Add ASGI application entry point for Placement API\n\nAdds placement.asgi.api:application, an ASGI entry point that wraps the\nexisting WSGI application using oslo_service.asgi.wrap_wsgi(). This\nenables serving the Placement API under modern ASGI servers such as\nHypercorn while preserving all middleware, authentication, and API\nbehavior unchanged.\n\nUsage:\n  $ hypercorn placement.asgi.api:application --bind 0.0.0.0:8778\n\nThe existing WSGI entry point (placement.wsgi.api:application) remains\navailable and unchanged for deployers using uwsgi, gunicorn, or mod_wsgi.\n\nASGI mode requires eventlet to be disabled. Placement already runs\nwithout eventlet by default, so no additional configuration is needed.\n\nThe ASGI entry point clears sys.argv before initializing the service\nas a defensive measure against ASGI servers passing their own CLI\narguments (--bind, --workers, etc.) which could confuse oslo.config.\n\nAlso adds a voting tempest-integrated-placement-asgi gate job that runs\nthe full integrated placement tempest suite with the API served under\nHypercorn instead of uWSGI.\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I319bd64055852c63d48c9d81c62fe2b6315960dd\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0b50b5933e16253c25a5fefd7fc52b3339498fe8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0b50b5933e16253c25a5fefd7fc52b3339498fe8"}]},"branch":"refs/heads/master"},"d3ecdf52d34e256044fcb70d90cd1256716b5d6e":{"kind":"REWORK","_number":3,"created":"2026-06-27 03:34:28.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/33/995133/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/33/995133/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/33/995133/3"}}},"commit":{"parents":[{"commit":"7ad9ef078b490423ac6605e805fad2b75c8f2107","subject":"Merge \"Update policy scope enforcement testing\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/7ad9ef078b490423ac6605e805fad2b75c8f2107"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 15:14:34.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-27 03:34:21.000000000","tz":-240},"subject":"Add ASGI application entry point for Placement API","message":"Add ASGI application entry point for Placement API\n\nAdds placement.asgi.api:application, an ASGI entry point that wraps the\nexisting WSGI application using oslo_service.asgi.wrap_wsgi(). This\nenables serving the Placement API under modern ASGI servers such as\nHypercorn while preserving all middleware, authentication, and API\nbehavior unchanged.\n\nUsage:\n  $ hypercorn placement.asgi.api:application --bind 0.0.0.0:8778\n\nThe existing WSGI entry point (placement.wsgi.api:application) remains\navailable and unchanged for deployers using uwsgi, gunicorn, or mod_wsgi.\n\nASGI mode requires eventlet to be disabled. Placement already runs\nwithout eventlet by default, so no additional configuration is needed.\n\nThe ASGI entry point clears sys.argv before initializing the service\nas a defensive measure against ASGI servers passing their own CLI\narguments (--bind, --workers, etc.) which could confuse oslo.config.\n\nAlso adds a voting tempest-integrated-placement-asgi gate job that runs\nthe full integrated placement tempest suite with the API served under\nHypercorn instead of uWSGI.\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I319bd64055852c63d48c9d81c62fe2b6315960dd\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/d3ecdf52d34e256044fcb70d90cd1256716b5d6e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/d3ecdf52d34e256044fcb70d90cd1256716b5d6e"}]},"branch":"refs/heads/master"},"719babbaa0a014a3629f5e34f3a01508842615cc":{"kind":"REWORK","_number":4,"created":"2026-06-29 00:29:13.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/33/995133/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/33/995133/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/33/995133/4"}}},"commit":{"parents":[{"commit":"7ad9ef078b490423ac6605e805fad2b75c8f2107","subject":"Merge \"Update policy scope enforcement testing\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/7ad9ef078b490423ac6605e805fad2b75c8f2107"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 15:14:34.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 00:28:46.000000000","tz":-240},"subject":"Add ASGI application entry point for Placement API","message":"Add ASGI application entry point for Placement API\n\nAdds placement.asgi.api:application, an ASGI entry point that wraps the\nexisting WSGI application using oslo_service.asgi.wrap_wsgi(). This\nenables serving the Placement API under modern ASGI servers such as\nHypercorn while preserving all middleware, authentication, and API\nbehavior unchanged.\n\nUsage:\n  $ hypercorn placement.asgi.api:application --bind 0.0.0.0:8778\n\nThe existing WSGI entry point (placement.wsgi.api:application) remains\navailable and unchanged for deployers using uwsgi, gunicorn, or mod_wsgi.\n\nASGI mode requires eventlet to be disabled. Placement already runs\nwithout eventlet by default, so no additional configuration is needed.\n\nThe ASGI entry point clears sys.argv before initializing the service\nas a defensive measure against ASGI servers passing their own CLI\narguments (--bind, --workers, etc.) which could confuse oslo.config.\n\nAlso adds a voting tempest-integrated-placement-asgi gate job that runs\nthe full integrated placement tempest suite with the API served under\nHypercorn instead of uWSGI.\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I319bd64055852c63d48c9d81c62fe2b6315960dd\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/719babbaa0a014a3629f5e34f3a01508842615cc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/719babbaa0a014a3629f5e34f3a01508842615cc"}]},"branch":"refs/heads/master"},"ce8980c3e4d7af7134b9c939025ff0cd021328e2":{"kind":"REWORK","_number":5,"created":"2026-07-01 04:08:43.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/33/995133/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/33/995133/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/33/995133/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/33/995133/5"}}},"commit":{"parents":[{"commit":"7ad9ef078b490423ac6605e805fad2b75c8f2107","subject":"Merge \"Update policy scope enforcement testing\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/7ad9ef078b490423ac6605e805fad2b75c8f2107"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 15:14:34.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-07-01 03:26:13.000000000","tz":-240},"subject":"Add ASGI application entry point for Placement API","message":"Add ASGI application entry point for Placement API\n\nAdds placement.asgi.api:application, an ASGI entry point that wraps the\nexisting WSGI application using oslo_service.asgi.wrap_wsgi(). This\nenables serving the Placement API under modern ASGI servers such as\nHypercorn while preserving all middleware, authentication, and API\nbehavior unchanged.\n\nUsage:\n  $ hypercorn placement.asgi.api:application --bind 0.0.0.0:8778\n\nThe existing WSGI entry point (placement.wsgi.api:application) remains\navailable and unchanged for deployers using uwsgi, gunicorn, or mod_wsgi.\n\nASGI mode requires eventlet to be disabled. Placement already runs\nwithout eventlet by default, so no additional configuration is needed.\n\nThe ASGI entry point clears sys.argv before initializing the service\nas a defensive measure against ASGI servers passing their own CLI\narguments (--bind, --workers, etc.) which could confuse oslo.config.\n\nAlso adds a voting tempest-integrated-placement-asgi gate job that runs\nthe full integrated placement tempest suite with the API served under\nHypercorn instead of uWSGI.\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I319bd64055852c63d48c9d81c62fe2b6315960dd\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/ce8980c3e4d7af7134b9c939025ff0cd021328e2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/ce8980c3e4d7af7134b9c939025ff0cd021328e2"}]},"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":""}}}]}
