)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"85725e0f527029122d080e3dfede6000a47eba46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c1cc0395_b1f4e301","updated":"2025-10-09 11:39:05.000000000","message":"Great to see this document getting changed. I have some suggestion to add to those from Cyril.","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"e24b809d9e720853e79ce5c9ca351c7938622112","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"515daca3_bdd7ac56","updated":"2025-10-08 15:51:31.000000000","message":"More information on this from Stephen:\n\nhttps://governance.openstack.org/tc/goals/completed/2025.2/migrate-from-wsgi-scripts-to-module-paths.html\n\nAnd what devstack currently does:\n\nhttps://github.com/openstack/devstack/blob/a3e37c86cab4ec43a4a6d1c1386abf12bc034db7/lib/apache#L335-L337","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"187032f8de2a166123e554ee6a484c334cf19fcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e51a84a9_4e68ed1f","updated":"2025-10-10 20:34:05.000000000","message":"Leaving some time for Bartosz to review. Please ping me again in a few days so I can merge this.","commit_id":"78f434b6b543d37e65bd53a9734c4f7c06071167"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c417a4064572d6af74a4cbd4b4eeb44104926937","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9f94dba6_ca9dd835","updated":"2025-10-10 09:20:19.000000000","message":"Looking good!","commit_id":"78f434b6b543d37e65bd53a9734c4f7c06071167"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ef718d95c8b12b3d15f24062ed02179fc9a7b89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3cadf8db_0c47aa6b","updated":"2025-12-11 19:53:45.000000000","message":"recheck logs expired, would like to see docs + reno formatting","commit_id":"78f434b6b543d37e65bd53a9734c4f7c06071167"}],"doc/source/admin/apache-httpd.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"85725e0f527029122d080e3dfede6000a47eba46","unresolved":true,"context_lines":[{"line_number":2,"context_line":"Running Glance in HTTPD"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Glance provides full support for running as a WSGI application under"},{"line_number":6,"context_line":"various web servers including Apache HTTPD and nginx. This deployment"},{"line_number":7,"context_line":"method is now fully supported and recommended for production"},{"line_number":8,"context_line":"environments."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Since the Pike release, Glance has included a WSGI script entrypoint"},{"line_number":11,"context_line":"that enables it to run with real web servers like Apache HTTPD or"},{"line_number":12,"context_line":"nginx. This document describes the recommended deployment patterns for"},{"line_number":13,"context_line":"running Glance with Apache HTTPD."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. note::"},{"line_number":16,"context_line":"   Glance now fully supports WSGI deployment including all functionality"},{"line_number":17,"context_line":"   such as interoperable image import, chunked transfer encoding, and"},{"line_number":18,"context_line":"   graceful shutdown. This deployment method is recommended for"},{"line_number":19,"context_line":"   production environments."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"uWSGI Server HTTP Mode"},{"line_number":22,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5248d624_9b0ee3b8","line":19,"range":{"start_line":5,"start_character":0,"end_line":19,"end_character":27},"updated":"2025-10-09 11:39:05.000000000","message":"The WSGI script entry point has been provided since Pike, but we added the `glance.wsgi.api` module in https://review.opendev.org/c/openstack/glance/+/932701 which was merged in the 2025.1 (Epoxy) release and are aiming to remove auto-generated WSGI script this cycle in https://review.opendev.org/c/openstack/glance/+/961465. How about we document the *current* state along with a timeline of how we got here?\n\n```suggestion\nGlance provides full support for running as a WSGI application under\nvarious web servers including Apache HTTPD and nginx. This deployment\nmethod is now fully supported and recommended for production\nenvironments. This document describes the recommended deployment\npatterns for running Glance with Apache HTTPD with uWSGI.\n\n.. versionchanged:: 15.0.0\n\n   Added the ``glance-wsgi-api`` WSGI script, which can be used with\n   uWSGI using the ``[uwsgi] wsgi-file`` configuration option. This\n   can be used for the basic API service, though not all functionality\n   is currently supported and standalone (eventlet) mode is still\n   recommended for production environments.\n\n.. versionchanged:: 21.0.0 (Victoria)\n\n   Glance now fully supports WSGI deployment including all functionality\n   such as interoperable image import, chunked transfer encoding, and\n   graceful shutdown. This deployment method is recommended for\n   production environments.\n   \n.. versionchanged:: 30.0.0 (2025.1, Epoxy)\n\n   Added the ``glance.wsgi.api`` module as a replacement for the\n   ``glance-wsgi-api`` WSGI script. This can be used with uWSGI using\n   the ``[uwsgi] module`` configuration option. The ``glance-wsgi-api``\n   WSGI script is now deprecated for removal.\n   \n.. versionchanged:: 32.0.0 (2026.1, Gazpacho)\n\n   The ``glance-wsgi-api`` WSGI script has been removed.\n```\n\n Users could build this information themselves by examining older versions of this doc but this is easier for them IMO.","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2c6fce998970b118db166f1d53ce95a2032925be","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Running Glance in HTTPD"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Glance provides full support for running as a WSGI application under"},{"line_number":6,"context_line":"various web servers including Apache HTTPD and nginx. This deployment"},{"line_number":7,"context_line":"method is now fully supported and recommended for production"},{"line_number":8,"context_line":"environments."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Since the Pike release, Glance has included a WSGI script entrypoint"},{"line_number":11,"context_line":"that enables it to run with real web servers like Apache HTTPD or"},{"line_number":12,"context_line":"nginx. This document describes the recommended deployment patterns for"},{"line_number":13,"context_line":"running Glance with Apache HTTPD."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. note::"},{"line_number":16,"context_line":"   Glance now fully supports WSGI deployment including all functionality"},{"line_number":17,"context_line":"   such as interoperable image import, chunked transfer encoding, and"},{"line_number":18,"context_line":"   graceful shutdown. This deployment method is recommended for"},{"line_number":19,"context_line":"   production environments."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"uWSGI Server HTTP Mode"},{"line_number":22,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"62364149_4ef32de0","line":19,"range":{"start_line":5,"start_character":0,"end_line":19,"end_character":27},"in_reply_to":"5248d624_9b0ee3b8","updated":"2025-12-11 14:32:31.000000000","message":"Acknowledged","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c417a4064572d6af74a4cbd4b4eeb44104926937","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Running Glance in HTTPD"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Glance provides full support for running as a WSGI application under"},{"line_number":6,"context_line":"various web servers including Apache HTTPD and nginx. This deployment"},{"line_number":7,"context_line":"method is now fully supported and recommended for production"},{"line_number":8,"context_line":"environments."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Since the Pike release, Glance has included a WSGI script entrypoint"},{"line_number":11,"context_line":"that enables it to run with real web servers like Apache HTTPD or"},{"line_number":12,"context_line":"nginx. This document describes the recommended deployment patterns for"},{"line_number":13,"context_line":"running Glance with Apache HTTPD."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. note::"},{"line_number":16,"context_line":"   Glance now fully supports WSGI deployment including all functionality"},{"line_number":17,"context_line":"   such as interoperable image import, chunked transfer encoding, and"},{"line_number":18,"context_line":"   graceful shutdown. This deployment method is recommended for"},{"line_number":19,"context_line":"   production environments."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"uWSGI Server HTTP Mode"},{"line_number":22,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"de654aa2_a2d49b75","line":19,"range":{"start_line":5,"start_character":0,"end_line":19,"end_character":27},"in_reply_to":"5248d624_9b0ee3b8","updated":"2025-10-10 09:20:19.000000000","message":"Done","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"85725e0f527029122d080e3dfede6000a47eba46","unresolved":true,"context_lines":[{"line_number":21,"context_line":"uWSGI Server HTTP Mode"},{"line_number":22,"context_line":"----------------------"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This is the **recommended** deployment method for running Glance under"},{"line_number":25,"context_line":"Apache HTTPD."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"uWSGI provides excellent performance and full compatibility with"},{"line_number":28,"context_line":"Glance\u0027s features including:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"92752e13_f9d95732","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":13},"updated":"2025-10-09 11:39:05.000000000","message":"```suggestion\nThis is the most common deployment method for running Glance under\nApache HTTPD and is what is currently tested by the Glance project.\n```\n\nI don\u0027t see another reason to recommend uWSGI over e.g. gunicorn *except* that\u0027s what we currently test, given uWSGI [is in maintenance mode now](https://github.com/unbit/uwsgi/blob/84aa2bdce56018df53b3ad21add00027d78879be/README) and there are plenty of alternatives such as the aforementioned gunicorn","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2c6fce998970b118db166f1d53ce95a2032925be","unresolved":false,"context_lines":[{"line_number":21,"context_line":"uWSGI Server HTTP Mode"},{"line_number":22,"context_line":"----------------------"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This is the **recommended** deployment method for running Glance under"},{"line_number":25,"context_line":"Apache HTTPD."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"uWSGI provides excellent performance and full compatibility with"},{"line_number":28,"context_line":"Glance\u0027s features including:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"65f6feea_82a9feba","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":13},"in_reply_to":"92752e13_f9d95732","updated":"2025-12-11 14:32:31.000000000","message":"Acknowledged","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c417a4064572d6af74a4cbd4b4eeb44104926937","unresolved":false,"context_lines":[{"line_number":21,"context_line":"uWSGI Server HTTP Mode"},{"line_number":22,"context_line":"----------------------"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This is the **recommended** deployment method for running Glance under"},{"line_number":25,"context_line":"Apache HTTPD."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"uWSGI provides excellent performance and full compatibility with"},{"line_number":28,"context_line":"Glance\u0027s features including:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e48e554b_b959f61b","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":13},"in_reply_to":"92752e13_f9d95732","updated":"2025-10-10 09:20:19.000000000","message":"Done","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"14f41894f0feb5c3a7af42e19aeffbb2c3b8fb28","unresolved":true,"context_lines":[{"line_number":57,"context_line":"   master \u003d true"},{"line_number":58,"context_line":"   processes \u003d 4"},{"line_number":59,"context_line":"   http-socket \u003d 127.0.0.1:60999"},{"line_number":60,"context_line":"   wsgi-file \u003d /usr/local/bin/glance-wsgi-api"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Key Configuration Options"},{"line_number":63,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0524954d_29cbf239","line":60,"range":{"start_line":60,"start_character":26,"end_line":60,"end_character":29},"updated":"2025-10-08 15:28:48.000000000","message":"Stephen Finucane proposed a change that removes the use of wsgi-file in the INI config:\n\nhttps://review.opendev.org/c/openstack/glance/+/961465/1/httpd/glance-api-uwsgi.ini\n\nI think we need to discuss this and figure out what the standard way of configuring WSGI is.","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2c6fce998970b118db166f1d53ce95a2032925be","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   master \u003d true"},{"line_number":58,"context_line":"   processes \u003d 4"},{"line_number":59,"context_line":"   http-socket \u003d 127.0.0.1:60999"},{"line_number":60,"context_line":"   wsgi-file \u003d /usr/local/bin/glance-wsgi-api"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Key Configuration Options"},{"line_number":63,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ec7354bd_51ec8e43","line":60,"range":{"start_line":60,"start_character":26,"end_line":60,"end_character":29},"in_reply_to":"0524954d_29cbf239","updated":"2025-12-11 14:32:31.000000000","message":"Acknowledged","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c417a4064572d6af74a4cbd4b4eeb44104926937","unresolved":false,"context_lines":[{"line_number":57,"context_line":"   master \u003d true"},{"line_number":58,"context_line":"   processes \u003d 4"},{"line_number":59,"context_line":"   http-socket \u003d 127.0.0.1:60999"},{"line_number":60,"context_line":"   wsgi-file \u003d /usr/local/bin/glance-wsgi-api"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Key Configuration Options"},{"line_number":63,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dacce428_66bbdc1e","line":60,"range":{"start_line":60,"start_character":26,"end_line":60,"end_character":29},"in_reply_to":"0524954d_29cbf239","updated":"2025-10-10 09:20:19.000000000","message":"Done","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"85725e0f527029122d080e3dfede6000a47eba46","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f2abba06_a9a7eb71","line":214,"range":{"start_line":209,"start_character":0,"end_line":214,"end_character":1},"updated":"2025-10-09 11:39:05.000000000","message":"iirc, Sphinx comes with a `pep` role out-of-the-box\n\n```suggestion\n    :pep:`3333`.\n\n    https://wsgi.readthedocs.io/en/latest/index.html\n\n```","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2c6fce998970b118db166f1d53ce95a2032925be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b5aa1fdc_610f5835","line":214,"range":{"start_line":209,"start_character":0,"end_line":214,"end_character":1},"in_reply_to":"f2abba06_a9a7eb71","updated":"2025-12-11 14:32:31.000000000","message":"Acknowledged","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c417a4064572d6af74a4cbd4b4eeb44104926937","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6911db32_e23eb949","line":214,"range":{"start_line":209,"start_character":0,"end_line":214,"end_character":1},"in_reply_to":"f2abba06_a9a7eb71","updated":"2025-10-10 09:20:19.000000000","message":"Done","commit_id":"933b7fa847aa63b68a541d2f32d0a26e6a6cb504"}]}
