)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"656b41d19489a0eb6da528504f8d53676f6dd07e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2071864d_dbce5138","updated":"2025-08-18 16:05:43.000000000","message":"I think you should fix the typo Abhishek noted inline.  Logic looks fine, up to you whether you want to do the stylistic cleanup Abhishek suggests.","commit_id":"73602475580dfdb683cfb7adfc63985ffbfc7295"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8e2f9493ba17306150e5c5e680eba1e9c0d897e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5319c2be_c5bc3a8f","updated":"2025-08-18 18:41:45.000000000","message":"Thanks Abhishek and Brian for the reviews","commit_id":"2dd403e19dd081ef997e103e91396e569c5e2811"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8b018d94c1aa71bac560425e88cabff3fea77d75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a484da6c_8820c28e","updated":"2025-08-19 10:25:14.000000000","message":"thank you!","commit_id":"2dd403e19dd081ef997e103e91396e569c5e2811"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"68d2c04f5095a67b107393c9f180cf72bed56a7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"abe98890_c3ef148a","updated":"2025-09-04 15:06:08.000000000","message":"I thought the Depends-On on the glance patch will also include the devstack + cinder changes since the glance patch depends on them but guess it doesn\u0027t work that way.\nI don\u0027t see the glance section populated in cinder.conf[1] and also the operation fails with NotAuthorized\n\nCinder:\n\nSep 04 11:31:35.204808 np35e4cc442e764 cinder-volume[180036]: ERROR oslo_messaging.rpc.server cinder.exception.ImageNotAuthorized: Not authorized for image c5448d7c-6b0c-4130-9efe-1c8981f95d8a.\n\nGlance:\nSep 04 11:31:34.707511 np35e4cc442e764 devstack@g-api.service[156892]: [pid: 156892|app: 0|req: 29/59] 127.0.0.1 () {42 vars in 1084 bytes} [Thu Sep  4 11:31:34 2025] GET /v2/images/c5448d7c-6b0c-4130-9efe-1c8981f95d8a/locations \u003d\u003e generated 185 bytes in 31 msecs (HTTP/1.1 403) 4 headers in 172 bytes (1 switches on core 0)\n\n[1] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_c7e/openstack/c7e8e544066b4528a90d2bb971992593/controller/logs/etc/cinder/cinder_conf.txt","commit_id":"f1c1c4035e72ee64fa3834896faaef25eabf6513"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3298ece55f8e943fc6a9e338692872f7a00b4159","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ee70899c_b88a7161","in_reply_to":"abe98890_c3ef148a","updated":"2025-09-04 15:07:48.000000000","message":"Let\u0027s try now with cinder + devstack + glance patches as depends on.","commit_id":"f1c1c4035e72ee64fa3834896faaef25eabf6513"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1382143f9f6f45609d2d50c25b1810ff87fda3b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"040ca0dd_8181211a","updated":"2025-09-04 16:53:26.000000000","message":"Now the glance section is there[1] and we even add the admin role for the glance user[2] still we see failures in cinder and glance\n\nCINDER\nSep 04 16:01:55.937356 np19c9b19432fc4 cinder-volume[87908]: ERROR oslo_messaging.rpc.server cinder.exception.ImageNotAuthorized: Not authorized for image 40132e51-cb2f-4adf-980f-fc6d41d6e789.\n\nGLANCE\nSep 04 16:01:55.090800 np19c9b19432fc4 devstack@g-api.service[88749]: [pid: 88749|app: 0|req: 98/181] 127.0.0.1 () {44 vars in 1162 bytes} [Thu Sep  4 16:01:55 2025] GET /v2/images/40132e51-cb2f-4adf-980f-fc6d41d6e789/locations \u003d\u003e generated 185 bytes in 23 msecs (HTTP/1.1 403) 4 headers in 172 bytes (1 switches on core 0)\n\nneed to reproduce locally to see what\u0027s going on here.\n\n[1]\n[glance]\nmemcached_servers \u003d localhost:11211\ncafile \u003d /opt/stack/data/ca-bundle.pem\nproject_domain_name \u003d Default\nproject_name \u003d service\nuser_domain_name \u003d Default\npassword \u003d secretservice\nusername \u003d glance\nauth_url \u003d https://10.209.36.189/identity\ninterface \u003d public\nauth_type \u003d password\n\n[2] 2025-09-04 15:39:16.143656 | controller | + functions-common:get_or_add_user_project_role:976 :   openstack --os-cloud devstack-system-admin role add admin --user glance --project service --user-domain Default --project-domain Default","commit_id":"c24c7ea5b9a5fa2125a0f7d4cad6dbf57d713b84"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"398db6c0f8f1a7c307f2d4c369db33b05e503592","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"32e01d75_50f3b56b","updated":"2025-09-04 21:06:40.000000000","message":"recheck deps updated","commit_id":"ac0c4c0a8d96625e4cd4d7c4eed1d0ba953b2fb8"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"76fdc4673248a2a39331d16abc5ea0f73a63741d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"4733cb03_0e269f43","updated":"2025-09-11 19:29:25.000000000","message":"Code and tests look good, CI is passing.  Glad to see us closer to killing off ossn-0065 and making ossn-0090 moot!","commit_id":"b851d08e875bb734e3c1b43732ad5490f7b44f9e"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"4ce30dd472b729e71d8cc1975b0eb79139966e0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"a3420bba_1a567a82","updated":"2025-09-11 13:13:37.000000000","message":"From everything I understand and have read, this patch looks correct, CI looks good, no objections from me.","commit_id":"b851d08e875bb734e3c1b43732ad5490f7b44f9e"}],"cinder/image/glance.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"56a752f5510d4f22ccf9987f04a9c755a21662bc","unresolved":true,"context_lines":[{"line_number":357,"context_line":"        # OSSN-0065, however to keep backward compatibility,"},{"line_number":358,"context_line":"        # we need to try with the old ``get`` call if we are using"},{"line_number":359,"context_line":"        # an older version of glance."},{"line_number":360,"context_line":"        # TODO: Remove the ``get_image_locations`` API call when 2024.1"},{"line_number":361,"context_line":"        # trasitions to unmaintained. (``get_image_locations``"},{"line_number":362,"context_line":"        # was added in 2024.2)."},{"line_number":363,"context_line":"        image_meta \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"72b86089_8615f95b","line":360,"range":{"start_line":360,"start_character":29,"end_line":360,"end_character":48},"updated":"2025-08-18 07:06:35.000000000","message":"Do you mean remove get call here???","commit_id":"73602475580dfdb683cfb7adfc63985ffbfc7295"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8e2f9493ba17306150e5c5e680eba1e9c0d897e6","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        # OSSN-0065, however to keep backward compatibility,"},{"line_number":358,"context_line":"        # we need to try with the old ``get`` call if we are using"},{"line_number":359,"context_line":"        # an older version of glance."},{"line_number":360,"context_line":"        # TODO: Remove the ``get_image_locations`` API call when 2024.1"},{"line_number":361,"context_line":"        # trasitions to unmaintained. (``get_image_locations``"},{"line_number":362,"context_line":"        # was added in 2024.2)."},{"line_number":363,"context_line":"        image_meta \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ca65afd9_7db6dba4","line":360,"range":{"start_line":360,"start_character":29,"end_line":360,"end_character":48},"in_reply_to":"345d6c13_6b095087","updated":"2025-08-18 18:41:45.000000000","message":"Sorry, my bad. Fixed now.","commit_id":"73602475580dfdb683cfb7adfc63985ffbfc7295"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"656b41d19489a0eb6da528504f8d53676f6dd07e","unresolved":true,"context_lines":[{"line_number":357,"context_line":"        # OSSN-0065, however to keep backward compatibility,"},{"line_number":358,"context_line":"        # we need to try with the old ``get`` call if we are using"},{"line_number":359,"context_line":"        # an older version of glance."},{"line_number":360,"context_line":"        # TODO: Remove the ``get_image_locations`` API call when 2024.1"},{"line_number":361,"context_line":"        # trasitions to unmaintained. (``get_image_locations``"},{"line_number":362,"context_line":"        # was added in 2024.2)."},{"line_number":363,"context_line":"        image_meta \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"345d6c13_6b095087","line":360,"range":{"start_line":360,"start_character":29,"end_line":360,"end_character":48},"in_reply_to":"72b86089_8615f95b","updated":"2025-08-18 16:05:43.000000000","message":"Yeah, that looks like a bad typo!","commit_id":"73602475580dfdb683cfb7adfc63985ffbfc7295"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"56a752f5510d4f22ccf9987f04a9c755a21662bc","unresolved":true,"context_lines":[{"line_number":391,"context_line":"        # some glance stores like nfs only meta data"},{"line_number":392,"context_line":"        # is stored and returned as locations."},{"line_number":393,"context_line":"        # so composite of two needs to be returned."},{"line_number":394,"context_line":"        return (direct_url, locations)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def add_location(self,"},{"line_number":397,"context_line":"                     context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":2,"id":"6a26e9e8_83290eda","line":394,"updated":"2025-08-18 07:06:35.000000000","message":"I think either you can change line #385 to\n```\n    direct_url \u003d image_meta.direct_url\n```\n\nOr \n\n```\n    direct_url \u003d getattr(image_meta, \u0027direct_url\u0027, None)\n    \n    if direct_url is not None:\n        # Old API format - extract from properties\n        locations \u003d getattr(image_meta, \u0027locations\u0027, [])\n    else:\n        # New API format - iterate through metadata\n        locations \u003d list(image_meta) # or locations \u003d [meta for meta in image_meta]\n    \n    return direct_url, locations\n```","commit_id":"73602475580dfdb683cfb7adfc63985ffbfc7295"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8e2f9493ba17306150e5c5e680eba1e9c0d897e6","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        # some glance stores like nfs only meta data"},{"line_number":392,"context_line":"        # is stored and returned as locations."},{"line_number":393,"context_line":"        # so composite of two needs to be returned."},{"line_number":394,"context_line":"        return (direct_url, locations)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    def add_location(self,"},{"line_number":397,"context_line":"                     context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":2,"id":"e788b45d_6c81994f","line":394,"in_reply_to":"6a26e9e8_83290eda","updated":"2025-08-18 18:41:45.000000000","message":"Done","commit_id":"73602475580dfdb683cfb7adfc63985ffbfc7295"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"151d625bf936d44b56aad93cfe44ea56d795d68b","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        # TODO: Remove the ``get`` API call when 2024.1 trasitions"},{"line_number":361,"context_line":"        # to unmaintained. (``get_image_locations`` was added in 2024.2)."},{"line_number":362,"context_line":"        image_meta \u003d {}"},{"line_number":363,"context_line":"        try_methods \u003d (\u0027get_image_locations\u0027, \u0027get\u0027)"},{"line_number":364,"context_line":"        for method in try_methods:"},{"line_number":365,"context_line":"            try:"},{"line_number":366,"context_line":"                image_meta \u003d client.call(context, method, image_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"0b9b3d3f_0154a6d3","line":363,"range":{"start_line":363,"start_character":22,"end_line":363,"end_character":45},"updated":"2025-09-04 17:00:34.000000000","message":"Just a note from the other changes we are discussing about cinder-\u003eglance communication. For this API also, you can call glance with privileged_user so that cinder will glance API with glance service user \u0027service\u0027 role  - https://review.opendev.org/c/openstack/cinder/+/958716\n\nIf we merge that change before this otherwise you can do it later as follow up also as this also work currently.","commit_id":"c24c7ea5b9a5fa2125a0f7d4cad6dbf57d713b84"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7e28ad079efac82dffed3efa3a2c19d8aae37e23","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        # TODO: Remove the ``get`` API call when 2024.1 trasitions"},{"line_number":361,"context_line":"        # to unmaintained. (``get_image_locations`` was added in 2024.2)."},{"line_number":362,"context_line":"        image_meta \u003d {}"},{"line_number":363,"context_line":"        try_methods \u003d (\u0027get_image_locations\u0027, \u0027get\u0027)"},{"line_number":364,"context_line":"        for method in try_methods:"},{"line_number":365,"context_line":"            try:"},{"line_number":366,"context_line":"                image_meta \u003d client.call(context, method, image_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a4439602_65b8eb41","line":363,"range":{"start_line":363,"start_character":22,"end_line":363,"end_character":45},"in_reply_to":"0b9b3d3f_0154a6d3","updated":"2025-09-04 18:22:13.000000000","message":"Thanks for the pointer, I totally forgot about that.\nUpdated the patch with the recommended changes, hope this time it finally passes.","commit_id":"c24c7ea5b9a5fa2125a0f7d4cad6dbf57d713b84"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e7f5f4aff7bae6dd47cfb6b3895cb39b3085e5d9","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                    break"},{"line_number":399,"context_line":"            except glanceclient.exc.HTTPNotImplemented:"},{"line_number":400,"context_line":"                LOG.debug(\u0027Glance method %s not available\u0027, method)"},{"line_number":401,"context_line":"            except glanceclient.exc.HTTPForbidden:"},{"line_number":402,"context_line":"                # In an upgrade scenario, if the operator hasn\u0027t configured"},{"line_number":403,"context_line":"                # the [glance] section in the cinder configuration file, we"},{"line_number":404,"context_line":"                # will fail on the new location GET API policy check."},{"line_number":405,"context_line":"                LOG.warning(\u0027Glance method %s is available but a dedicated \u0027"},{"line_number":406,"context_line":"                            \u0027[glance] section is required in the cinder \u0027"},{"line_number":407,"context_line":"                            \u0027configuration file to allow service-to-service \u0027"},{"line_number":408,"context_line":"                            \u0027communication.\u0027, method)"},{"line_number":409,"context_line":"            except Exception:"},{"line_number":410,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":411,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"0fe8b475_6fd4be0d","line":408,"range":{"start_line":401,"start_character":0,"end_line":408,"end_character":53},"updated":"2025-09-05 17:01:56.000000000","message":"++ on handling it here. Both cinder and glance changes are config changes, so not suitable for backport. I think this fallback is the best solution to handle old Glance with the new Cinder.","commit_id":"0bc5244d46672015d5545112280365d76f94cd90"}]}
