)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2bb72d8f20a826a4e0887712cc5964052b27e03c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fcc5a5c7_610e85fa","updated":"2026-05-25 09:21:57.000000000","message":"I am not clear why we need these changes in this patch.\n\nAFAIK we are moving away from standalone glance-api server. Almost all our jobs use uWSGI, not standalone server.\n\nThis patch changes Server / eventlet.wsgi to wsgiref in wsgi.py. But uWSGI does not use that code. Entry point is glance.wsgi.api:application and wsgi_app.py. So for uWSGI these changes are not needed.\n\nWe still need wsgi.py for Request, Resource, Router, uWSGI chunked upload, etc. Only standalone server part is not needed.\n\nI think better to remove standalone server (Server, PosixServer, and glance/cmd/api.py path), not replace eventlet with wsgiref.\n\nThank you!!","commit_id":"2eb169bc17fc99ca9c6a4a7ca0bb61c5cae49a6d"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"117dd593d35878e54d9e0d2e4dd4d7b6b8a361ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6155c1ea_cb924bd6","in_reply_to":"fcc5a5c7_610e85fa","updated":"2026-05-28 10:44:54.000000000","message":"Thanks Abhishek. You’re right, that uWSGI uses glance.wsgi.api:application , not the standalone glance.common.wsgi.Server code. So swapping eventlet for wsgiref in that standalone server doesn’t really help how Glance runs for most people.\n\nI started this change because we still had a standalone glance-api path (with eventlet), and some tests and dev setups still use it. I wanted to remove eventlet from that path first.\n\nAfter your comment, I agree it’s better to remove the standalone server completely, not replace it with wsgiref. We should keep wsgi.py only for the parts uWSGI still needs (like Request, Resource, and router helpers).\n\nI’ll update this patch to remove Server/PosixServer and the standalone glance/cmd/api.py path, and fix any tests or docs that still use the standalone server.","commit_id":"2eb169bc17fc99ca9c6a4a7ca0bb61c5cae49a6d"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"330663d641ef2812bd152213547ee444e5e0a814","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8904421b_fa6205fb","updated":"2026-05-29 14:24:39.000000000","message":"I think we should have releasenote for this patch.","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"}],"glance/cmd/api.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"330663d641ef2812bd152213547ee444e5e0a814","unresolved":true,"context_lines":[{"line_number":24,"context_line":"import os"},{"line_number":25,"context_line":"import sys"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# If ../glance/__init__.py exists, add ../ to Python search path, so that"},{"line_number":28,"context_line":"# it will override what happens to be installed in /usr/(local/)lib/python..."},{"line_number":29,"context_line":"possible_topdir \u003d os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),"},{"line_number":30,"context_line":"                                   os.pardir,"},{"line_number":31,"context_line":"                                   os.pardir))"},{"line_number":32,"context_line":"if os.path.exists(os.path.join(possible_topdir, \u0027glance\u0027, \u0027__init__.py\u0027)):"},{"line_number":33,"context_line":"    sys.path.insert(0, possible_topdir)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"import glance_store"},{"line_number":36,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"d8fb179d_2df0bb8a","line":33,"range":{"start_line":27,"start_character":0,"end_line":33,"end_character":39},"updated":"2026-05-29 14:24:39.000000000","message":"why it is still here, is this required anywhere?","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"330663d641ef2812bd152213547ee444e5e0a814","unresolved":true,"context_lines":[{"line_number":43,"context_line":"    \"glance.wsgi.api:application.\\n\""},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# NOTE(rosmaita): Any new exceptions added should preserve the current"},{"line_number":47,"context_line":"# error codes for backward compatibility.  The value 99 is returned"},{"line_number":48,"context_line":"# for errors not listed in this map."},{"line_number":49,"context_line":"ERROR_CODE_MAP \u003d {RuntimeError: 1,"},{"line_number":50,"context_line":"                  exception.WorkerCreationFailure: 2,"},{"line_number":51,"context_line":"                  glance_store.exceptions.BadStoreConfiguration: 3,"},{"line_number":52,"context_line":"                  ValueError: 4,"},{"line_number":53,"context_line":"                  cfg.ConfigFileValueError: 5}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def fail(e):"},{"line_number":57,"context_line":"    sys.stderr.write(\"ERROR: %s\\n\" % e)"},{"line_number":58,"context_line":"    return_code \u003d ERROR_CODE_MAP.get(type(e), 99)"},{"line_number":59,"context_line":"    sys.exit(return_code)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":2,"id":"b3ce1538_b47714c3","line":59,"range":{"start_line":46,"start_character":0,"end_line":59,"end_character":25},"updated":"2026-05-29 14:24:39.000000000","message":"Any idea why this is kept?","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"}],"glance/common/wsgi.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"330663d641ef2812bd152213547ee444e5e0a814","unresolved":true,"context_lines":[{"line_number":263,"context_line":"except ImportError:"},{"line_number":264,"context_line":"    LOG.debug(\u0027Detected not running under uwsgi\u0027)"},{"line_number":265,"context_line":"    uwsgi \u003d None"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"# Reserved file stores for staging and tasks operations"},{"line_number":268,"context_line":"RESERVED_STORES \u003d {"},{"line_number":269,"context_line":"    \u0027os_glance_staging_store\u0027: \u0027file\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"b3c4f65c_b32d78c7","line":266,"updated":"2026-05-29 14:24:39.000000000","message":"Should we exit from here?","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"}],"glance/tests/unit/api/test_cmd.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"330663d641ef2812bd152213547ee444e5e0a814","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        with mock.patch(\u0027sys.stderr.write\u0027) as mock_stderr:"},{"line_number":125,"context_line":"            with mock.patch(\u0027sys.exit\u0027) as mock_exit:"},{"line_number":126,"context_line":"                exc_msg \u003d \u0027A ValueError, LOL!\u0027"},{"line_number":127,"context_line":"                test_exc \u003d ValueError(exc_msg)"},{"line_number":128,"context_line":"                glance.cmd.api.fail(test_exc)"},{"line_number":129,"context_line":"                mock_stderr.assert_called_once_with(\u0027ERROR: %s\\n\u0027 % exc_msg)"},{"line_number":130,"context_line":"                mock_exit.assert_called_once_with(4)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c9c1dfd8_20d2091d","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":45},"updated":"2026-05-29 14:24:39.000000000","message":"why this is renamed here and in following tests? Its unnecessary imo!!","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"}]}
