)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"856e897ebf6e21442f5d878a5f161d5e548d86d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"29904b96_d09719c4","updated":"2025-09-05 14:19:15.000000000","message":"recheck changes to temptest plugin job","commit_id":"c90a91ea402521037a90a652d9b32fcd569bec0d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1d929548e37bede5da9ebaaab3aad698476afe30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"51bd16a1_9794b959","updated":"2026-02-13 22:24:13.000000000","message":"last patch in the series, needs some more work.","commit_id":"7167a2f1791e6581b61c44e5e7e395e867295c10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9d0ffca69b2075f5b7e03df29175485e7285459b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b927dfa1_7204dcb2","updated":"2026-02-16 12:58:22.000000000","message":"I\u0027m hoping https://review.opendev.org/c/openstack/manila-tempest-plugin/+/976938 will fix this","commit_id":"6555cfe41df99888e3f112daca37aeffe3c63f42"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6a64c62b1889d06250d5eee3ef76deed36b285cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"133e136d_a0151231","updated":"2026-02-17 12:18:12.000000000","message":"Hmm, the grenade failures look real\n\n```\nFeb 16 16:59:25.528554 npa462156819a54 devstack@m-api.service[158900]: unable to load app 0 (mountpoint\u003d\u0027\u0027) (callable not found or import error)\nFeb 16 16:59:25.528554 npa462156819a54 devstack@m-api.service[158900]: *** no app loaded. going in full dynamic mode ***\nFeb 16 16:59:25.528554 npa462156819a54 devstack@m-api.service[158900]: --- no python application found, check your startup logs for errors ---\nFeb 16 16:59:25.528554 npa462156819a54 devstack@m-api.service[158900]: [pid: 158900|app: -1|req: -1/1] 10.209.35.5 () {50 vars in 755 bytes} [Mon Feb 16 16:59:25 2026] GET /share \u003d\u003e generated 21 bytes in 0 msecs (HTTP/1.1 500) 3 headers in 102 bytes (0 switches on core 0)\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: CRITICAL manila [-] Unhandled error: ModuleNotFoundError: No module named \u0027manila.api.v1.router\u0027\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila Traceback (most recent call last):\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/new/manila/manila/wsgi/api.py\", line 24, in \u003cmodule\u003e\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     application \u003d wsgi.initialize_application()\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/new/manila/manila/wsgi/wsgi.py\", line 47, in initialize_application\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return wsgi.Loader(CONF).load_app(name\u003d\u0027osapi_share\u0027)\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/oslo_service/wsgi.py\", line 382, in load_app\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return deploy.loadapp(\"config:%s\" % self.config_path, name\u003dname)\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 246, in loadapp\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return loadobj(APP, uri, name\u003dname, **kw)\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 271, in loadobj\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return context.create()\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 738, in create\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return self.object_type.invoke(self)\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 129, in invoke\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return fix_call(\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/util.py\", line 61, in fix_call\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     val \u003d callable(*args, **kw)\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/new/manila/manila/api/__init__.py\", line 21, in root_app_factory\nFeb 16 16:59:25.529999 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return paste.urlmap.urlmap_factory(loader, global_conf, **local_conf)\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/urlmap.py\", line 26, in urlmap_factory\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     app \u003d loader.get_app(app_name, global_conf\u003dglobal_conf)\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 352, in get_app\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return self.app_context(name\u003dname, global_conf\u003dglobal_conf).create()\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 738, in create\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return self.object_type.invoke(self)\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 129, in invoke\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return fix_call(\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/util.py\", line 61, in fix_call\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     val \u003d callable(*args, **kw)\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/new/manila/manila/api/middleware/auth.py\", line 55, in pipeline_factory\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     app \u003d loader.get_app(pipeline[-1])\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 352, in get_app\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return self.app_context(name\u003dname, global_conf\u003dglobal_conf).create()\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 361, in app_context\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return self.get_context(APP, name\u003dname, global_conf\u003dglobal_conf)\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 462, in get_context\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     context \u003d self._context_from_explicit(\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/opt/stack/data/venv/lib/python3.10/site-packages/paste/deploy/loadwsgi.py\", line 528, in _context_from_explicit\nFeb 16 16:59:25.532513 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     ).load()\nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/usr/lib/python3.10/importlib/metadata/__init__.py\", line 171, in load\nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     module \u003d import_module(match.group(\u0027module\u0027))\nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: ERROR manila   File \"/usr/lib/python3.10/importlib/__init__.py\", line 126, in import_module\nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: ERROR manila     return _bootstrap._gcd_import(name[level:], package, level)\nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: ERROR manila ModuleNotFoundError: No module named \u0027manila.api.v1.router\u0027\nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: ERROR manila \nFeb 16 16:59:25.535125 npa462156819a54 devstack@m-api.service[158901]: unable to load app 0 (mountpoint\u003d\u0027\u0027) (callable not found or import error)\n```\n\nPerhaps I should keep the router and remove it later? That or lay down a new `paste.ini` during the upgrade.","commit_id":"f1912f67cbde19cdaa895e8ba8d5ded06f4b4efd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3bc29a945b3192226b195f664b7236d9bdea29c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"44990b4c_b5f64b13","in_reply_to":"133e136d_a0151231","updated":"2026-02-17 12:24:18.000000000","message":"https://review.opendev.org/c/openstack/manila/+/977073/ is a potential solution.","commit_id":"f1912f67cbde19cdaa895e8ba8d5ded06f4b4efd"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"8e766d8aa5858392d20e02cdc929eb177c89ad7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"32c8fa6d_f9cb1400","updated":"2026-02-19 18:55:51.000000000","message":"LGTM, thanks Stephen!","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"14d7baf89aac838a2536df917126d3d048b05e0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"23cecbd3_d2855a2f","updated":"2026-02-19 06:22:15.000000000","message":"Thank you. This was thorough.. Some comments inline; do address them if you update the patch, or we can do a follow up commit :)","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f13026dca8b30323e66e37baa4d7ce966c4ec817","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"48d404c4_b1c391fa","updated":"2026-02-19 15:23:37.000000000","message":"lgtm, I agree that some leftovers can be covered in a follow up later.","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"}],"manila/api/openstack/wsgi.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"14d7baf89aac838a2536df917126d3d048b05e0f","unresolved":true,"context_lines":[{"line_number":53,"context_line":"API_VERSION_REQUEST_HEADER \u003d \u0027X-OpenStack-Manila-API-Version\u0027"},{"line_number":54,"context_line":"EXPERIMENTAL_API_REQUEST_HEADER \u003d \u0027X-OpenStack-Manila-API-Experimental\u0027"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"V1_SCRIPT_NAME \u003d \u0027/v1\u0027"},{"line_number":57,"context_line":"V2_SCRIPT_NAME \u003d \u0027/v2\u0027"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dd30d576_d5d11d9e","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":22},"updated":"2026-02-19 06:22:15.000000000","message":"we can drop this now","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"}],"manila/api/v1/share_servers.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"14d7baf89aac838a2536df917126d3d048b05e0f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"70cb7ab2_09577523","updated":"2026-02-19 06:22:15.000000000","message":"This file wasn\u0027t deleted, the contents have been removed.. we\u0027d need to rm?","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"}],"manila/api/views/versions.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"14d7baf89aac838a2536df917126d3d048b05e0f","unresolved":true,"context_lines":[{"line_number":48,"context_line":"                      \u0027href\u0027: self._generate_href(version\u003d\u0027v2\u0027)})"},{"line_number":49,"context_line":"        return links"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _generate_href(self, version\u003d\u0027v1\u0027, path\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a URL that refers to a specific version_number.\"\"\""},{"line_number":53,"context_line":"        base_url \u003d self._get_base_url_without_version()"},{"line_number":54,"context_line":"        href \u003d urllib.parse.urljoin(base_url, version).rstrip(\u0027/\u0027) + \u0027/\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"b7d8390a_2eabe71f","line":51,"range":{"start_line":51,"start_character":37,"end_line":51,"end_character":41},"updated":"2026-02-19 06:22:15.000000000","message":"maybe we can make this v2, or remove it entirely","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9e89e71dc256384d6f4f4fb499067c6222801fd7","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        return href"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_base_url_without_version(self):"},{"line_number":60,"context_line":"        \"\"\"Get the base URL with out the /v1 suffix.\"\"\""},{"line_number":61,"context_line":"        return re.sub(\u0027v[1-9]+/?$\u0027, \u0027\u0027, self.base_url)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5949dab1_0b2f6285","line":60,"range":{"start_line":60,"start_character":41,"end_line":60,"end_character":44},"updated":"2026-02-19 06:24:05.000000000","message":"v2","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"}],"manila/tests/api/openstack/test_wsgi.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f13026dca8b30323e66e37baa4d7ce966c4ec817","unresolved":true,"context_lines":[{"line_number":159,"context_line":"        self.assertEqual(api_version.APIVersionRequest(\u00272.51\u0027),"},{"line_number":160,"context_line":"                         request.api_version_request)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @ddt.data(\u0027\u0027, \u0027/share\u0027, \u0027/v1\u0027, \u0027/v2/shares\u0027, \u0027/v1.1/\u0027, \u0027/share/v1\u0027,"},{"line_number":163,"context_line":"              \u0027/shared-file-sytems/v2\u0027, \u0027/share/v3.5/share-replicas\u0027,"},{"line_number":164,"context_line":"              \u0027/shared-file-sytems/v2/shares/xyzzy/action\u0027)"},{"line_number":165,"context_line":"    def test_set_api_version_request(self, resource):"}],"source_content_type":"text/x-python","patch_set":8,"id":"c8bee0f8_c54c1cf4","line":162,"range":{"start_line":162,"start_character":4,"end_line":162,"end_character":70},"updated":"2026-02-19 15:23:37.000000000","message":"what about these ones?","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"14e3db34fe095ee95a3ed209f9fbb071fda14c1e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.assertEqual(api_version.APIVersionRequest(\u00272.51\u0027),"},{"line_number":160,"context_line":"                         request.api_version_request)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @ddt.data(\u0027\u0027, \u0027/share\u0027, \u0027/v1\u0027, \u0027/v2/shares\u0027, \u0027/v1.1/\u0027, \u0027/share/v1\u0027,"},{"line_number":163,"context_line":"              \u0027/shared-file-sytems/v2\u0027, \u0027/share/v3.5/share-replicas\u0027,"},{"line_number":164,"context_line":"              \u0027/shared-file-sytems/v2/shares/xyzzy/action\u0027)"},{"line_number":165,"context_line":"    def test_set_api_version_request(self, resource):"}],"source_content_type":"text/x-python","patch_set":8,"id":"080c919b_2293d2dd","line":162,"range":{"start_line":162,"start_character":4,"end_line":162,"end_character":70},"in_reply_to":"c8bee0f8_c54c1cf4","updated":"2026-02-19 21:37:18.000000000","message":"This should be fine, because it kinda tests that the microversion header is _only_ added if the request path contains v2..","commit_id":"8b94409fb0cb991ef8e315dbbb42c423c0042dd6"}]}
