)]}'
{"/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"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"526272eb63a63e89a46680e529f27faf4cbbb554","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f08e7d90_dce73bfa","updated":"2026-06-02 07:16:41.000000000","message":"Thanks for the review Abhishek! Please have a look at updated changes.","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"526272eb63a63e89a46680e529f27faf4cbbb554","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bf97220b_e5b4327d","in_reply_to":"8904421b_fa6205fb","updated":"2026-06-02 07:16:41.000000000","message":"Done","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"687c370aaa112617ca0af8a6978036c61c6c7316","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dd937a21_b244e0cb","updated":"2026-06-02 07:24:19.000000000","message":"Looks good to me, one nit inline.","commit_id":"120252ca17b9d53d2c6e187ce77273974126ad58"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"900514370f16880712e1340e10df94e1963935d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7a92f5a6_8cc987d0","updated":"2026-06-02 10:56:44.000000000","message":"looks like it\u0027s need rebase","commit_id":"120252ca17b9d53d2c6e187ce77273974126ad58"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"566042c9d3c9f961ec6146a3e4594221a2be6c74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8822d6bf_bb6cbc76","updated":"2026-06-08 10:22:20.000000000","message":"recheck","commit_id":"0593a5e24192c8bedcea50f483f28e8b56cccd41"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"f984ae88633a456a28c6c7cd899d5cafdd01822a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9aaa3452_e9c8072f","updated":"2026-06-09 04:13:52.000000000","message":"recheck","commit_id":"0593a5e24192c8bedcea50f483f28e8b56cccd41"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"21bfea12d5ad9b6797d53468033457140d6dcf2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ba919c0d_09b20c80","updated":"2026-06-19 09:37:45.000000000","message":"Looks good to go!!","commit_id":"cea6482150c971ed29439708b7bb71cee427b630"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"6a84f1342875c459ae993618cf8db8420a7ddb69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"232bb7ad_5e263ee0","updated":"2026-06-19 14:28:14.000000000","message":"Really nice!","commit_id":"cea6482150c971ed29439708b7bb71cee427b630"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b10835ae8f38f4965ba19ec73138982e669cd40d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"bbb6d1d6_23d1f41f","updated":"2026-06-19 16:49:08.000000000","message":"recheck","commit_id":"cea6482150c971ed29439708b7bb71cee427b630"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"9c13734dbeb3b89a92c1e84f721338e2a3197aeb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fb585e49_23b32be3","updated":"2026-06-20 02:26:42.000000000","message":"recheck","commit_id":"cea6482150c971ed29439708b7bb71cee427b630"}],"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":"687c370aaa112617ca0af8a6978036c61c6c7316","unresolved":false,"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":"c057d63a_805d9ed7","line":33,"range":{"start_line":27,"start_character":0,"end_line":33,"end_character":39},"in_reply_to":"5f6a3f50_fe8b401c","updated":"2026-06-02 07:24:19.000000000","message":"Done","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"526272eb63a63e89a46680e529f27faf4cbbb554","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":"5f6a3f50_fe8b401c","line":33,"range":{"start_line":27,"start_character":0,"end_line":33,"end_character":39},"in_reply_to":"d8fb179d_2df0bb8a","updated":"2026-06-02 07:16:41.000000000","message":"yes not needed, removed.","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"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"526272eb63a63e89a46680e529f27faf4cbbb554","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":"b47d5a2e_18622326","line":59,"range":{"start_line":46,"start_character":0,"end_line":59,"end_character":25},"in_reply_to":"b3ce1538_b47714c3","updated":"2026-06-02 07:16:41.000000000","message":"removed.","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"687c370aaa112617ca0af8a6978036c61c6c7316","unresolved":false,"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":"6ed55893_141a116c","line":59,"range":{"start_line":46,"start_character":0,"end_line":59,"end_character":25},"in_reply_to":"b47d5a2e_18622326","updated":"2026-06-02 07:24:19.000000000","message":"Done","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"efa8ae573df79e7666b644c60e725da4b6e17bd8","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"_STANDALONE_REMOVED_MSG \u003d ("},{"line_number":25,"context_line":"    \"ERROR: Standalone glance-api is no longer supported. \""},{"line_number":26,"context_line":"    \"Deploy Glance under uWSGI or mod_wsgi using \""},{"line_number":27,"context_line":"    \"glance.wsgi.api:application.\\n\""},{"line_number":28,"context_line":")"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"52a194c2_f1cf074a","line":26,"updated":"2026-06-04 17:26:25.000000000","message":"I know I\u0027m guilty of adding some uWSGI-specifics into the code, but I think we should probably start just referring to \"WSGI\". Meaning, don\u0027t call out specific implementations here. I think we should strive to (or at least expect to) work under any WSGI container, which could include uWSGI, mod_wsgi, gunicorn, etc.","commit_id":"c78bf75a21b6b8748c2cc2572595a1130994c613"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7cb05fce4c514c09188e2e5ba3f677c8b3ffc771","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"_STANDALONE_REMOVED_MSG \u003d ("},{"line_number":25,"context_line":"    \"ERROR: Standalone glance-api is no longer supported. \""},{"line_number":26,"context_line":"    \"Deploy Glance under uWSGI or mod_wsgi using \""},{"line_number":27,"context_line":"    \"glance.wsgi.api:application.\\n\""},{"line_number":28,"context_line":")"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dc770349_a1dc1b02","line":26,"in_reply_to":"52a194c2_f1cf074a","updated":"2026-06-08 07:47:24.000000000","message":"Acknowledged","commit_id":"c78bf75a21b6b8748c2cc2572595a1130994c613"}],"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"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"526272eb63a63e89a46680e529f27faf4cbbb554","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":"c19f1384_b1551be0","line":266,"in_reply_to":"b3c4f65c_b32d78c7","updated":"2026-06-02 07:16:41.000000000","message":"No — we should not sys.exit() here.\n\nThis block only checked if the uwsgi module was available at import time. We still need uWSGI for chunked uploads, but if it’s not importable (mod_wsgi, tests), we should fall back to the normal body path, not exit.\n\nReplaced it with _get_uwsgi() so uwsgi is imported only when needed; behavior is unchanged when uwsgi isn’t present.","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"687c370aaa112617ca0af8a6978036c61c6c7316","unresolved":false,"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":"306827ae_9057d37c","line":266,"in_reply_to":"c19f1384_b1551be0","updated":"2026-06-02 07:24:19.000000000","message":"Acknowledged","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"687c370aaa112617ca0af8a6978036c61c6c7316","unresolved":true,"context_lines":[{"line_number":265,"context_line":"    return uwsgi"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"# Reserved file stores for staging and tasks operations"},{"line_number":269,"context_line":"RESERVED_STORES \u003d {"},{"line_number":270,"context_line":"    \u0027os_glance_staging_store\u0027: \u0027file\u0027,"},{"line_number":271,"context_line":"    \u0027os_glance_tasks_store\u0027: \u0027file\u0027"},{"line_number":272,"context_line":"}"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"class Middleware(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"77232b28_5c515e90","line":272,"range":{"start_line":268,"start_character":0,"end_line":272,"end_character":1},"updated":"2026-06-02 07:24:19.000000000","message":"nit: I think this can be removed as well. If you need new PS then please remove it. IF it is used somewhere else then move it to that module rather than keeping it here.","commit_id":"120252ca17b9d53d2c6e187ce77273974126ad58"}],"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"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"526272eb63a63e89a46680e529f27faf4cbbb554","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":"f53b0c3a_d4e11c9f","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":45},"in_reply_to":"c9c1dfd8_20d2091d","updated":"2026-06-02 07:16:41.000000000","message":"yeah not needed anymore as fail() is removed.","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"687c370aaa112617ca0af8a6978036c61c6c7316","unresolved":false,"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":"df43b5bd_ab9273e2","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":45},"in_reply_to":"f53b0c3a_d4e11c9f","updated":"2026-06-02 07:24:19.000000000","message":"Acknowledged","commit_id":"1568767788fbd653a6e5197988bd3ef34d1ada8f"}],"releasenotes/notes/remove-standalone-glance-api-server-a8f3e2b1c9d4e5f6.yaml":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"efa8ae573df79e7666b644c60e725da4b6e17bd8","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The standalone ``glance-api`` process (eventlet-based HTTP server started"},{"line_number":5,"context_line":"    directly from the ``glance-api`` console script) has been removed. Deploy"},{"line_number":6,"context_line":"    Glance under uWSGI or mod_wsgi using the WSGI application"},{"line_number":7,"context_line":"    ``glance.wsgi.api:application``. Running ``glance-api`` on the command"},{"line_number":8,"context_line":"    line now exits with an error message describing the supported deployment"},{"line_number":9,"context_line":"    method."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7c994ef3_97d70f92","line":6,"updated":"2026-06-04 17:26:25.000000000","message":"here too.","commit_id":"c78bf75a21b6b8748c2cc2572595a1130994c613"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7cb05fce4c514c09188e2e5ba3f677c8b3ffc771","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The standalone ``glance-api`` process (eventlet-based HTTP server started"},{"line_number":5,"context_line":"    directly from the ``glance-api`` console script) has been removed. Deploy"},{"line_number":6,"context_line":"    Glance under uWSGI or mod_wsgi using the WSGI application"},{"line_number":7,"context_line":"    ``glance.wsgi.api:application``. Running ``glance-api`` on the command"},{"line_number":8,"context_line":"    line now exits with an error message describing the supported deployment"},{"line_number":9,"context_line":"    method."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"d88a119b_3b46adae","line":6,"in_reply_to":"7c994ef3_97d70f92","updated":"2026-06-08 07:47:24.000000000","message":"Acknowledged","commit_id":"c78bf75a21b6b8748c2cc2572595a1130994c613"}]}
