)]}'
{"id":"openstack%2Fdevstack~995132","triplet_id":"openstack%2Fdevstack~master~If385d91da820e24732b27d840ff38f66cf35899d","project":"openstack/devstack","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:48:17.000000000","reason":"Change was marked work in progress"}},"hashtags":["asgi","asgi-phase-0"],"change_id":"If385d91da820e24732b27d840ff38f66cf35899d","subject":"Add ASGI serving support via Hypercorn","status":"NEW","created":"2026-06-26 19:09:04.000000000","updated":"2026-06-29 00:27:18.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"work_in_progress":true,"has_review_started":true,"meta_rev_id":"c3325edf94111b64cbb41555a604bb03eb8ec998","_number":995132,"virtual_id_number":995132,"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":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-06-28 22:33:15.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":{"disliked":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"all":[{"value":-1,"date":"2026-06-28 21:59:24.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"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":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"_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":2},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"permitted_voting_range":{"min":0,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}]},"pending_reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}]},"reviewer_updates":[{"updated":"2026-06-26 19:13:39.000000000","updated_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"reviewer":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"state":"REVIEWER"},{"updated":"2026-06-26 19:13:59.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":"9e0e4dbe74c7e41ede1cc3bf451ebf2d194bf8f1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 19:09:04.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7c9de3e18d8e3e1d2f6ae2c622303966102a0852","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-26 19:13:39.000000000","message":"Patch Set 1: Code-Review-1\n\nThis change depends on a change that failed to merge.\n\nChanges https://review.opendev.org/c/openstack/requirements/+/995122, https://review.opendev.org/c/openstack/oslo.service/+/995128 are needed.","accounts_in_message":[],"_revision_number":1},{"id":"37698555e674b755f4aeb1a86df081e5f184e75e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-26 19:13:59.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/requirements/+/995122, https://review.opendev.org/c/openstack/oslo.service/+/995128 are needed.","accounts_in_message":[],"_revision_number":1},{"id":"c1acf30341ccbf701a6741b6c293e5ebb7e87ce4","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":"1929403be435460bd7842a40a71beda500294c02","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:17.000000000","message":"Hashtag added: asgi","accounts_in_message":[],"_revision_number":1},{"id":"789fd2513c643c6ed01357436a749163ca68354f","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 22:38:28.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"182c45a1e5af2b62739b269c22bd2e4c8fefd8bb","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-26 23:53:10.000000000","message":"Patch Set 2: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/93187fc11eb64292a5f9a7ff2d3193dd\n\n- devstack-platform-centos-10-stream https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6c2e5d8eb52b4ef4a78facf854c3040c : SUCCESS in 1h 13m 25s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"c8a2abf2bc61c1b273aa4136011ebe877b046c36","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 23:53:37.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":3},{"id":"f9028127810c2ca745419a6adf42c74bbd44b451","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-26 23:56:00.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"78abc55c8b65a70bd4ca40f10188f9309ec3e1cb","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-27 01:09:25.000000000","message":"Patch Set 4: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/ddb0ace2a1614615801ef7c59a77451a\n\n- devstack-platform-centos-10-stream https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/95b4afcc102e46558de716eeba2671ab : SUCCESS in 1h 12m 15s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"8d2debc1590d3e9bfa47cf14a0fb306c260d99d6","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 01:26:58.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":5},{"id":"a9a53ab11154e7033f96e18d920454a8a64648eb","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-27 01:27:15.000000000","message":"Patch Set 5: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":5},{"id":"e5b462d65606ce01674e7281927f347c3b5833c8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 01:55:04.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4edbc04d33ad4cdd920d1483e1775ee6\n\n- devstack https://zuul.opendev.org/t/openstack/build/61e114c368ed423d818b2de5216b46cd : SUCCESS in 24m 41s","accounts_in_message":[],"_revision_number":5},{"id":"407c08967babb613aa142fb21c6da75580a16d52","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 02:23:34.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"1f4f26704cd98a682de7a1ce809e7ab105ac08e0","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-27 02:23:54.000000000","message":"Patch Set 6: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":6},{"id":"57f6e6dd91c4032c8c8f4dd9a4c379948cf13472","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 03:47:48.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9359cad39fee42b18c903bb934cc1612\n\n- devstack https://zuul.opendev.org/t/openstack/build/c6eab8130b494da284d25bff181843c4 : SUCCESS in 28m 17s","accounts_in_message":[],"_revision_number":6},{"id":"3e8553f094ab2992e451d1516fbcc40176e0fc64","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 04:19:53.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":7},{"id":"2af316386fa6795928a504a4321179b25878a85d","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-27 04:20:09.000000000","message":"Patch Set 7: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":7},{"id":"b54c383d0537d3450dc3c4f85971dade1d89db7b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 04:48:23.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b2a8100773814a6d87d6bbf6aa910b12\n\n- devstack https://zuul.opendev.org/t/openstack/build/8b15846bcd2a48de8493fbc942f86ebf : SUCCESS in 26m 14s","accounts_in_message":[],"_revision_number":7},{"id":"13b65310bb68b52e7264031ec1f57d1e78e08155","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 16:48:20.000000000","message":"Uploaded patch set 8.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":8},{"id":"7f67599569e3190d4fed468de417fe256321ffae","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-27 16:48:41.000000000","message":"Patch Set 8: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":8},{"id":"2ee7a9912c813ee2c5dc8ba58efee8507c5f64e3","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 17:22:04.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/aca25cbe124244e0b4e72fdb28aa3b0b\n\n- devstack https://zuul.opendev.org/t/openstack/build/568a890a20304259920ffc1781ee6c32 : SUCCESS in 25m 32s","accounts_in_message":[],"_revision_number":8},{"id":"4010494855049e7d40b27bad8199ae94c6fa0c92","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-27 22:30:59.000000000","message":"Uploaded patch set 9.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":9},{"id":"3fbd2530befe041c02d0bd4ba13ec17cc84d6dd3","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-27 22:31:21.000000000","message":"Patch Set 9: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":9},{"id":"7950dca1682ce3efab53cb538c4d4b9612c22dab","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-27 22:50:29.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1777adb26b324d0081b4cade0be8df85\n\n- devstack https://zuul.opendev.org/t/openstack/build/ec1060586144489b8f09474ecc51a9a0 : SUCCESS in 13m 43s","accounts_in_message":[],"_revision_number":9},{"id":"1d8ff69d9a06574514673f1896ef58985ddeae1d","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 03:54:59.000000000","message":"Uploaded patch set 10.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":10},{"id":"aec7a46a864b96d9d8dfbf1974ee39a8464cf87c","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 03:55:17.000000000","message":"Patch Set 10: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":10},{"id":"6194ec6e21180b7f7e39ec349cfc93cde2c9db33","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 04:10:32.000000000","message":"Patch Set 10: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5722da73a20e471db49aee3d58734f81\n\n- devstack https://zuul.opendev.org/t/openstack/build/5d1ffe59694442bf83cfc952921a6b58 : SUCCESS in 12m 57s","accounts_in_message":[],"_revision_number":10},{"id":"2fa4c07aecba9977747b55bd412e2bcf9d18fb3c","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 06:38:56.000000000","message":"Uploaded patch set 11.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":11},{"id":"671332e4decfe9497cf18d201b7598e92fd2f87a","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 06:39:12.000000000","message":"Patch Set 11: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The project \"opendev.org/openstack/oslo.service\" was not found.  All\n  projects referenced within a Zuul configuration must first be added to\n  the main configuration file by the Zuul administrator.\n\nThe problem appears in the \"tempest-full-asgi\" job stanza:\n\n  job:\n      name: tempest-full-asgi\n      parent: tempest-full-py3\n      description: |\n        Full integrated tempest suite with all core API services\n        (keystone, glance, cinder, nova, neutron, placement) served\n        under Hypercorn (ASGI) instead of uWSGI.\n      required-projects:\n        - opendev.org/openstack/oslo.service\n  ...\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 996","accounts_in_message":[],"_revision_number":11},{"id":"f32a7519a376bf9b816c51c8405028bfe9135dcd","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 06:56:38.000000000","message":"Uploaded patch set 12: Commit message was updated.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":12},{"id":"f6e611bebad4af1af32e38d767f9a25453d214c6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 06:56:42.000000000","message":"Patch Set 12: 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/d1032626819e41eda1d1b79659c5ab0a\n\n\nWarning:\n  Dependency cycle detected and project openstack/glance doesn\u0027t allow circular dependencies","accounts_in_message":[],"_revision_number":12},{"id":"0030545ea5b2513dc973690fcb81ee8b4d7d5543","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 06:56:44.000000000","message":"Patch Set 12: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/e34171469ee04c9d9e6415daf04999fa\n\n\nWarning:\n  Dependency cycle detected and project openstack/glance doesn\u0027t allow circular dependencies","accounts_in_message":[],"_revision_number":12},{"id":"97c1b3b7dc99428406afe37a7c620c1ecebaf625","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 07:05:49.000000000","message":"Patch Set 12:\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/d655dd0a474b4f36845f84f5b8582deb\n\n\nWarning:\n  Dependency cycle detected and project openstack/glance doesn\u0027t allow circular dependencies","accounts_in_message":[],"_revision_number":12},{"id":"cd4f0dedf1be73add2c4c5a40df1117f88d8d782","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 07:06:49.000000000","message":"Uploaded patch set 13.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":13},{"id":"62fc9cb49e23b3139a86e687c3f8d8330dad328b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 07:06:52.000000000","message":"Patch Set 13: 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/991791fcfd994987a04b2c317e5e76c2\n\n\nWarning:\n  Dependency cycle detected and project openstack/glance doesn\u0027t allow circular dependencies","accounts_in_message":[],"_revision_number":13},{"id":"8e5986406243af90d0ad857158a591673354f352","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 07:06:55.000000000","message":"Patch Set 13: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/641e56aacf064fc9a680a0eb6b344e1a\n\n\nWarning:\n  Dependency cycle detected and project openstack/glance doesn\u0027t allow circular dependencies","accounts_in_message":[],"_revision_number":13},{"id":"1094a6d2b485276bda1fa59775c965060103c1a5","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 07:19:02.000000000","message":"Uploaded patch set 14: Commit message was updated.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":14},{"id":"21af242293068645a523f76ef2c007517779b484","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 07:19:19.000000000","message":"Patch Set 14: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":14},{"id":"6c09de106698dce698d200c315a4078d169eadff","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 07:21:35.000000000","message":"Uploaded patch set 15.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":15},{"id":"c27950ea12271ca16734b933f26a197f7e958a24","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 07:21:50.000000000","message":"Patch Set 15: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":15},{"id":"15a637cfa30240291664f0b0f7d21c171f557cc4","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 07:29:23.000000000","message":"Uploaded patch set 16.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":16},{"id":"e1cb6adc9277b46bde511c4b457b667d702f3b80","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 07:29:39.000000000","message":"Patch Set 16: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":16},{"id":"2160c67a949ce3c635d431326833e83889c29b7c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 07:59:09.000000000","message":"Patch Set 16: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6c34a28c5d3f4a9caf807f038eae94ad\n\n- devstack https://zuul.opendev.org/t/openstack/build/2c93f6989ec24a6888677d8605c44231 : SUCCESS in 27m 55s","accounts_in_message":[],"_revision_number":16},{"id":"df6cd37709d7e41326666e2d190f691846172187","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-28 21:59:03.000000000","message":"Uploaded patch set 17.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":17},{"id":"c0fc51a3dca2ed1fa4ba1403c915a355646fc459","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-28 21:59:24.000000000","message":"Patch Set 17: Code-Review-1\n\nZuul encountered a syntax error while parsing its\nconfiguration in the repo openstack/devstack on branch master.  The\nproblem was:\n\n  The nodeset \"devstack-single-node-debian-trixie\" was not found.\n\nThe problem appears in the \"devstack-platform-debian-trixie\" job stanza:\n\n  job:\n      name: devstack-platform-debian-trixie\n      parent: tempest-full-py3\n      description: Debian Trixie platform test\n      nodeset: devstack-single-node-debian-trixie\n      timeout: 9000\n      vars:\n        configure_swap_size: 4096\n\n  in \"openstack/devstack/.zuul.yaml@master\", line 809","accounts_in_message":[],"_revision_number":17},{"id":"78bd31d390756e993e6984ca61eadc5367e5bae3","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 22:33:15.000000000","message":"Patch Set 17: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4c53f94bf4f749df864b361a4379eeae\n\n- devstack https://zuul.opendev.org/t/openstack/build/da60c21422984fe4a81090d2c30dfe02 : SUCCESS in 25m 07s","accounts_in_message":[],"_revision_number":17},{"id":"c3325edf94111b64cbb41555a604bb03eb8ec998","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":17}],"current_revision_number":17,"current_revision":"fb859886ee523cea3dce35b352573f952264d32b","revisions":{"f1913bd08b5521f6b1832e9052d0ea40ce22191c":{"kind":"REWORK","_number":1,"created":"2026-06-26 19:09:04.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/1"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdd the ability to serve OpenStack API services under the Hypercorn\nASGI server instead of uWSGI. This is controlled by a new\nASGI_SERVICES variable in local.conf which lists the services to\nserve under ASGI.\n\nNew helpers in lib/apache:\n  - is_asgi_enabled(): check if a service should use ASGI\n  - install_hypercorn(): install Hypercorn into the service venv\n  - run_hypercorn(): start a service under Hypercorn with an apache\n    HTTP proxy in front (reusing write_local_proxy_http_config), so\n    the public endpoint URL and TLS termination are identical to\n    uWSGI mode\n  - remove_asgi_config(): clean up apache site config\n\nWiring added for placement-api and cinder-api (c-api). Each service\nbranches on is_asgi_enabled at configure, start, and cleanup time.\nWhen ASGI is not enabled for a service, the existing uWSGI path is\nunchanged.\n\nThe ASGI entry points (placement.asgi.api:application and\ncinder.asgi.api:application) wrap the existing WSGI applications\nusing oslo_service.asgi.wrap_wsgi(), preserving all paste deploy\nmiddleware pipelines, authentication, and API behavior.\n\nUsage in local.conf:\n  ASGI_SERVICES\u003d\"placement-api cinder-api\"\n  LIBS_FROM_GIT\u003doslo.service\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/f1913bd08b5521f6b1832e9052d0ea40ce22191c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/f1913bd08b5521f6b1832e9052d0ea40ce22191c"}]},"branch":"refs/heads/master"},"ee49760d4a7a22a7de408a96487dbf70283b604d":{"kind":"REWORK","_number":2,"created":"2026-06-26 22:38:28.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/2"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 22:38:20.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdd the ability to serve OpenStack API services under the Hypercorn\nASGI server instead of uWSGI. This is controlled by a new\nASGI_SERVICES variable in local.conf which lists the services to\nserve under ASGI.\n\nNew helpers in lib/apache:\n  - is_asgi_enabled(): check if a service should use ASGI\n  - install_hypercorn(): install Hypercorn into the service venv\n  - write_asgi_config(): allocate a port and configure the apache\n    HTTP proxy during the configure phase (mirrors write_uwsgi_config)\n  - start_hypercorn(): start Hypercorn on the pre-allocated port\n    during the start phase\n  - remove_asgi_config(): clean up apache site config\n\nPort allocation is split into configure (write_asgi_config) and start\n(start_hypercorn) phases to avoid collisions with ports allocated by\nother services\u0027 write_uwsgi_config/write_local_uwsgi_http_config\ncalls. Previously, allocating the port at start time could collide\nwith ports already assigned (but not yet bound) during configure.\n\nWiring added for placement-api and cinder-api (c-api). Each service\nbranches on is_asgi_enabled at configure, start, and cleanup time.\nWhen ASGI is not enabled for a service, the existing uWSGI path is\nunchanged.\n\nThe ASGI entry points (placement.asgi.api:application and\ncinder.asgi.api:application) wrap the existing WSGI applications\nusing oslo_service.asgi.wrap_wsgi(), preserving all paste deploy\nmiddleware pipelines, authentication, and API behavior.\n\nUsage in local.conf:\n  ASGI_SERVICES\u003d\"placement-api cinder-api\"\n  LIBS_FROM_GIT\u003doslo.service\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/ee49760d4a7a22a7de408a96487dbf70283b604d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/ee49760d4a7a22a7de408a96487dbf70283b604d"}]},"branch":"refs/heads/master"},"694e577ccd3121ebb10705d1f9ae5a3f64319066":{"kind":"REWORK","_number":3,"created":"2026-06-26 23:53:37.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/3"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 23:53:31.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdd the ability to serve OpenStack API services under the Hypercorn\nASGI server instead of uWSGI. This is controlled by a new\nASGI_SERVICES variable in local.conf which lists the services to\nserve under ASGI.\n\nNew helpers in lib/apache:\n  - is_asgi_enabled(): check if a service should use ASGI\n  - install_hypercorn(): install Hypercorn into the service venv\n  - write_asgi_config(): allocate a port, bind a placeholder socket\n    to reserve it (preventing get_random_port collisions), and\n    configure the apache HTTP proxy during the configure phase\n  - start_hypercorn(): kill the placeholder, start Hypercorn on the\n    pre-allocated port during the start phase\n  - remove_asgi_config(): clean up apache site config\n\nPort reservation uses a placeholder socket because get_random_port\nchecks lsof for live bindings. Without the placeholder, ports\nallocated during the configure phase (when nothing is bound) can\ncollide with ports allocated by other services\u0027\nwrite_local_uwsgi_http_config calls (which also use get_random_port\nduring configure).\n\nWiring added for placement-api and cinder-api (c-api). Each service\nbranches on is_asgi_enabled at configure, start, and cleanup time.\nWhen ASGI is not enabled for a service, the existing uWSGI path is\nunchanged.\n\nThe ASGI entry points (placement.asgi.api:application and\ncinder.asgi.api:application) wrap the existing WSGI applications\nusing oslo_service.asgi.wrap_wsgi(), preserving all paste deploy\nmiddleware pipelines, authentication, and API behavior.\n\nUsage in local.conf:\n  ASGI_SERVICES\u003d\"placement-api cinder-api\"\n  LIBS_FROM_GIT\u003doslo.service\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/694e577ccd3121ebb10705d1f9ae5a3f64319066"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/694e577ccd3121ebb10705d1f9ae5a3f64319066"}]},"branch":"refs/heads/master"},"1180bce985bfefc75db98ebffe2225e8c10c1488":{"kind":"REWORK","_number":4,"created":"2026-06-26 23:56:00.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/4"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 23:55:54.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdd the ability to serve OpenStack API services under the Hypercorn\nASGI server instead of uWSGI. This is controlled by a new\nASGI_SERVICES variable in local.conf which lists the services to\nserve under ASGI.\n\nNew helpers in lib/apache:\n  - is_asgi_enabled(): check if a service should use ASGI\n  - install_hypercorn(): install Hypercorn into the service venv\n  - write_asgi_config(): configure the apache HTTP proxy for a fixed\n    per-service port during the configure phase\n  - start_hypercorn(): start Hypercorn on the pre-configured port\n    during the start phase\n  - remove_asgi_config(): clean up apache site config\n\nEach ASGI service defines a fixed internal port (e.g.\nPLACEMENT_ASGI_PORT\u003d28778, CINDER_ASGI_PORT\u003d28776) rather than using\nget_random_port, which checks lsof for live bindings and can return\nthe same port to multiple services during the configure phase when\nnothing is bound yet.\n\nWiring added for placement-api and cinder-api (c-api). Each service\nbranches on is_asgi_enabled at configure, start, and cleanup time.\nWhen ASGI is not enabled for a service, the existing uWSGI path is\nunchanged.\n\nThe ASGI entry points (placement.asgi.api:application and\ncinder.asgi.api:application) wrap the existing WSGI applications\nusing oslo_service.asgi.wrap_wsgi(), preserving all paste deploy\nmiddleware pipelines, authentication, and API behavior.\n\nUsage in local.conf:\n  ASGI_SERVICES\u003d\"placement-api cinder-api\"\n  LIBS_FROM_GIT\u003doslo.service\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/1180bce985bfefc75db98ebffe2225e8c10c1488"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/1180bce985bfefc75db98ebffe2225e8c10c1488"}]},"branch":"refs/heads/master"},"7215e20d347b617307a40cbd68a29dbacc96fcfa":{"kind":"REWORK","_number":5,"created":"2026-06-27 01:26:58.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/5"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-27 01:26:49.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\n\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7215e20d347b617307a40cbd68a29dbacc96fcfa"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7215e20d347b617307a40cbd68a29dbacc96fcfa"}]},"branch":"refs/heads/master"},"7f0971d9d650fb91db5d99ea863ec767571f541b":{"kind":"REWORK","_number":6,"created":"2026-06-27 02:23:34.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/6"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-27 02:23:06.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7f0971d9d650fb91db5d99ea863ec767571f541b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7f0971d9d650fb91db5d99ea863ec767571f541b"}]},"branch":"refs/heads/master"},"b5d8ea2742ed463fcacacc1d2d42a01df4578060":{"kind":"REWORK","_number":7,"created":"2026-06-27 04:19:53.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/7"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-27 04:19:44.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/b5d8ea2742ed463fcacacc1d2d42a01df4578060"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/b5d8ea2742ed463fcacacc1d2d42a01df4578060"}]},"branch":"refs/heads/master"},"76d89ca4b317c2bc5d752a9d13d1f5bbdcea0ba0":{"kind":"REWORK","_number":8,"created":"2026-06-27 16:48:20.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/8"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-27 16:48:06.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/76d89ca4b317c2bc5d752a9d13d1f5bbdcea0ba0"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/76d89ca4b317c2bc5d752a9d13d1f5bbdcea0ba0"}]},"branch":"refs/heads/master"},"f02dad8d8cd0cdf64ca2cbf693cf8cb0c393a2ab":{"kind":"REWORK","_number":9,"created":"2026-06-27 22:30:59.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/9"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-27 22:30:57.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/f02dad8d8cd0cdf64ca2cbf693cf8cb0c393a2ab"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/f02dad8d8cd0cdf64ca2cbf693cf8cb0c393a2ab"}]},"branch":"refs/heads/master"},"9aa6ee9f3f41997da4aef2a2a380739428d604aa":{"kind":"REWORK","_number":10,"created":"2026-06-28 03:54:59.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/10"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 03:54:57.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/9aa6ee9f3f41997da4aef2a2a380739428d604aa"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/9aa6ee9f3f41997da4aef2a2a380739428d604aa"}]},"branch":"refs/heads/master"},"50cba8f1ee6529f6a6b1355d8f028c259a826734":{"kind":"REWORK","_number":11,"created":"2026-06-28 06:38:56.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/11"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 06:38:41.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/50cba8f1ee6529f6a6b1355d8f028c259a826734"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/50cba8f1ee6529f6a6b1355d8f028c259a826734"}]},"branch":"refs/heads/master"},"207497e19617d2ba68ded123354da6db5a1bf411":{"kind":"NO_CODE_CHANGE","_number":12,"created":"2026-06-28 06:56:38.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/12"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 06:56:32.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nIncludes a tempest-full-asgi gate job that runs all core services\nsimultaneously under Hypercorn.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/placement/+/995133\nDepends-On: https://review.opendev.org/c/openstack/cinder/+/995131\nDepends-On: https://review.opendev.org/c/openstack/nova/+/995163\nDepends-On: https://review.opendev.org/c/openstack/neutron/+/995162\nDepends-On: https://review.opendev.org/c/openstack/keystone/+/995161\nDepends-On: https://review.opendev.org/c/openstack/glance/+/995165\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/207497e19617d2ba68ded123354da6db5a1bf411"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/207497e19617d2ba68ded123354da6db5a1bf411"}]},"branch":"refs/heads/master"},"7840545f0a3cdb8af15dc6e687f3b6694969e91b":{"kind":"REWORK","_number":13,"created":"2026-06-28 07:06:49.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/13"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 07:06:42.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nIncludes a tempest-full-asgi gate job that runs all core services\nsimultaneously under Hypercorn.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/placement/+/995133\nDepends-On: https://review.opendev.org/c/openstack/cinder/+/995131\nDepends-On: https://review.opendev.org/c/openstack/nova/+/995163\nDepends-On: https://review.opendev.org/c/openstack/neutron/+/995162\nDepends-On: https://review.opendev.org/c/openstack/keystone/+/995161\nDepends-On: https://review.opendev.org/c/openstack/glance/+/995165\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7840545f0a3cdb8af15dc6e687f3b6694969e91b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7840545f0a3cdb8af15dc6e687f3b6694969e91b"}]},"branch":"refs/heads/master"},"9c2d96c41869a405369225dc690e463c2ce0b395":{"kind":"NO_CODE_CHANGE","_number":14,"created":"2026-06-28 07:19:02.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/14","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/14","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/14"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 07:18:31.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nIncludes a tempest-full-asgi gate job that runs all core services\nsimultaneously under Hypercorn.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/9c2d96c41869a405369225dc690e463c2ce0b395"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/9c2d96c41869a405369225dc690e463c2ce0b395"}]},"branch":"refs/heads/master"},"504386c968ece6cda79402a5082a3ca402526b80":{"kind":"REWORK","_number":15,"created":"2026-06-28 07:21:35.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/15","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/15","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/15 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/15 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/15 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/15"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 07:21:27.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nIncludes a tempest-full-asgi gate job that runs all core services\nsimultaneously under Hypercorn.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/504386c968ece6cda79402a5082a3ca402526b80"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/504386c968ece6cda79402a5082a3ca402526b80"}]},"branch":"refs/heads/master"},"219ce3c16833992a82e8247a241c66d662f5f805":{"kind":"REWORK","_number":16,"created":"2026-06-28 07:29:23.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/16","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/16","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/16 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/16 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/16 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/16"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 07:29:21.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nIncludes a tempest-full-asgi gate job that runs all core services\nsimultaneously under Hypercorn.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/219ce3c16833992a82e8247a241c66d662f5f805"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/219ce3c16833992a82e8247a241c66d662f5f805"}]},"branch":"refs/heads/master"},"fb859886ee523cea3dce35b352573f952264d32b":{"kind":"REWORK","_number":17,"created":"2026-06-28 21:59:03.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/32/995132/17","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/32/995132/17","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/17 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/17 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/32/995132/17 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/32/995132/17"}}},"commit":{"parents":[{"commit":"886291296c846797d58396bd45cd8a5cbbb1775e","subject":"Run resolute noVNC proxy in threaded mode","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/886291296c846797d58396bd45cd8a5cbbb1775e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-26 19:08:56.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-28 21:58:19.000000000","tz":-240},"subject":"Add ASGI serving support via Hypercorn","message":"Add ASGI serving support via Hypercorn\n\nAdds infrastructure for serving OpenStack API services under Hypercorn\n(ASGI) instead of uwsgi (WSGI). Controlled by the ASGI_SERVICES\nvariable in local.conf.\n\nNew helpers in lib/apache:\n- is_asgi_enabled: check if a service is in ASGI_SERVICES\n- install_hypercorn: pip install hypercorn into service venv\n- write_asgi_config: write port config and apache ProxyPass\n- start_hypercorn: launch hypercorn via run_process\n- remove_asgi_config: cleanup apache site config\n\nServices with ASGI support:\n- placement-api (port 28778)\n- cinder-api (port 28776)\n- nova n-api (port 28774) and n-api-meta (direct bind)\n- neutron-api (port 29696)\n- keystone (port 25000)\n- glance-api (port 28292)\n\nEach service\u0027s lib file branches on is_asgi_enabled to choose between\nuwsgi and hypercorn for configure, start, and cleanup phases. All\nexisting uwsgi behavior is preserved when ASGI_SERVICES is empty.\n\nIncludes a tempest-full-asgi gate job that runs all core services\nsimultaneously under Hypercorn.\n\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995122\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nChange-Id: If385d91da820e24732b27d840ff38f66cf35899d\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/fb859886ee523cea3dce35b352573f952264d32b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/fb859886ee523cea3dce35b352573f952264d32b"}]},"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","applied_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}},{"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":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{"label:Review-Priority\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":""}}}]}
