)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ab983fee9fc94c5831995db4e2c7dbeba9bb9f96","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This patch adds the call for \u0027add_image_location\u0027 method which"},{"line_number":10,"context_line":"triggers the new location API workflow that is more secure and"},{"line_number":11,"context_line":"robust than the old location workflow."},{"line_number":12,"context_line":"This call me made when glance is using cinder as a backend and"},{"line_number":13,"context_line":"we want to perform an optimized \"upload volume to image\" operation."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Depends-On: https://review.opendev.org/c/openstack/glance/+/890509"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"6e16cfd5_088ad13f","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":17},"updated":"2024-07-16 12:52:03.000000000","message":"typo: This call *is* made","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"ab983fee9fc94c5831995db4e2c7dbeba9bb9f96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bd9cf0b6_443295a0","updated":"2024-07-16 12:52:03.000000000","message":"Minor typo in commit message","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9bab661bf2144c78cce9e92fc7aef6b0776874c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8630f2d8_a981f425","updated":"2025-04-25 20:55:30.000000000","message":"Question inline; nothing major.","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"dbc97676d05adefce0cdbbb5faaf5ced31e3182e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dde568ee_8c00130c","updated":"2024-07-15 08:48:27.000000000","message":"recheck the job hasn\u0027t reported results in a while","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"55589ce4284009ae2543787b7406ec6d4ee2b801","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5cceb0dd_42f2b871","updated":"2025-05-06 08:04:56.000000000","message":"Need to address the PEP8 issue, but otherwise this LGTM.","commit_id":"09ef775a70170d77729bec7f8bdbfcdd3a14aa45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e51890a29cfaa2e902908c4fd30114683cfbd02c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7315ac22_0c088da7","updated":"2025-04-28 19:27:49.000000000","message":"Thanks Brian and Fernando for the reviews.","commit_id":"09ef775a70170d77729bec7f8bdbfcdd3a14aa45"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2052cb0dff8e77126a3453cee17e37a90dc21233","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"08c96172_73de534c","in_reply_to":"5cceb0dd_42f2b871","updated":"2025-05-06 09:58:40.000000000","message":"I\u0027ve removed the test causing the issue since H202 makes sense that asserting \"Exception\" in tests doesn\u0027t seem fruitful, maybe that\u0027s why we didn\u0027t have the test for that in the first place.","commit_id":"09ef775a70170d77729bec7f8bdbfcdd3a14aa45"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"75d286cc39b6d09cab6f8af37c85455bf0efb961","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"52c1b72f_31504158","updated":"2025-05-07 14:40:13.000000000","message":"Revisions LGTM.","commit_id":"ffd93a6d10c91482d0dfd9a82b63d140affb5ea3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b04fb08b7a6213396572365ed4204803b0ec5f23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"98c64f0e_349da299","updated":"2025-05-13 06:02:24.000000000","message":"recheck glance disabled hashing in ceph jobs","commit_id":"ffd93a6d10c91482d0dfd9a82b63d140affb5ea3"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"10aff1dfe04f9600be5888a1f0edb5ab057c8465","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d52cf170_2ac770f5","updated":"2025-05-16 07:24:29.000000000","message":"recheck now cinder has also disabled hashing","commit_id":"ffd93a6d10c91482d0dfd9a82b63d140affb5ea3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c568431a333f0c2a08e6c20dba6caca67b0ebbd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3ea2ddff_1f306cc4","updated":"2025-07-28 13:31:03.000000000","message":"@Eric response inline","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6df391670432798e09fcd792e7b400fd1351fa0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b4b5d0fd_e53de12b","updated":"2025-07-26 00:47:21.000000000","message":"Dependency has merged.","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"be3b8462048254539c6d59fa2901072c98e1e274","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fc5bb1f2_78f03c92","updated":"2025-07-28 13:59:53.000000000","message":"OK, Eric has convinced me","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"931ff4a8d035000780e906ede67b09da3630a4c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6b71cb8a_1b692a55","updated":"2025-07-25 15:22:27.000000000","message":"Still LGTM. Nice to see OSSN-0065 finally becoming a non-issue.","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b1ffe10fb4cd5152f44ad844d8eae6de074a3e55","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fa7ea3e3_e372eb2b","updated":"2025-07-29 14:05:15.000000000","message":"Revisions LGTM.","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"14bcf6d341ae47ea13e7fa2bf3f990dcf0cb53f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"084b207f_25bdc269","updated":"2025-07-30 13:10:30.000000000","message":"Since add_image_location was added to glance in 2024.2, should we backport this to Epoxy and Dalmatian?","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c11b390a065548b57313d94718eab25a6e80507","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1a327bd7_83647357","updated":"2025-07-28 14:27:42.000000000","message":"Thanks Eric and Brian","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"543ebd84b4883eee42ac0a8c31b5aa5a6bf92e9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8991e328_8b0bb11e","updated":"2025-07-29 11:14:17.000000000","message":"recheck devstack-plugin-nfs-tempest-full POST_FAILURE","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"8e94231ad87feb3e14829ef41e366e545d47f266","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9fcfc30c_5c8e6002","updated":"2025-07-28 19:05:20.000000000","message":"recheck grenade failed to start","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"aa365c59b4a31faec5bfc59f2d42e540f35f654b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ff837e3b_83fe27b6","updated":"2025-07-29 22:01:31.000000000","message":"recheck tempest-integrated-storage timed out","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1612e510e2e0954b13b49b5a6b8ed10b71f29868","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d933e491_1cfa7a7c","in_reply_to":"084b207f_25bdc269","updated":"2025-07-30 13:31:06.000000000","message":"I guess for that glance need to backport the hash calculation fix to these branches as well.\n\nhttps://review.opendev.org/q/topic:%22bug/2045769%22","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f5705689495b60df19d98d0e8d7d7a0b9a9813a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f74ed3e6_3c8f50e4","in_reply_to":"d933e491_1cfa7a7c","updated":"2025-07-30 13:32:38.000000000","message":"OK, keep us posted on what the Glance team decides about backporting.","commit_id":"a39fa8fb2876a98b83570295504c0f5e46da7d6a"}],"cinder/image/glance.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"9e3107acbc33e748403ea2c1662681c5b7893727","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        Returns a dict containing image metadata on success."},{"line_number":380,"context_line":"        \"\"\""},{"line_number":381,"context_line":"        client \u003d GlanceClientWrapper()"},{"line_number":382,"context_line":"        try_methods \u003d (\u0027add_image_location\u0027, \u0027add_location\u0027)"},{"line_number":383,"context_line":"        for method in try_methods:"},{"line_number":384,"context_line":"            try:"},{"line_number":385,"context_line":"                return client.call(context, method,"}],"source_content_type":"text/x-python","patch_set":2,"id":"feeb649a_d38f9001","line":382,"updated":"2024-12-18 22:48:50.000000000","message":"I think trying two different Glance API calls might be a bit confusing to developers unaware of the changes to the location API. I would suggest mentioning in a comment why we are doing this as described in the commit message.","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e51890a29cfaa2e902908c4fd30114683cfbd02c","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        Returns a dict containing image metadata on success."},{"line_number":380,"context_line":"        \"\"\""},{"line_number":381,"context_line":"        client \u003d GlanceClientWrapper()"},{"line_number":382,"context_line":"        try_methods \u003d (\u0027add_image_location\u0027, \u0027add_location\u0027)"},{"line_number":383,"context_line":"        for method in try_methods:"},{"line_number":384,"context_line":"            try:"},{"line_number":385,"context_line":"                return client.call(context, method,"}],"source_content_type":"text/x-python","patch_set":2,"id":"931f89ef_b161ef2b","line":382,"in_reply_to":"915d916a_a07a1162","updated":"2025-04-28 19:27:49.000000000","message":"I\u0027ve added a comment addressing both the concerns.","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9bab661bf2144c78cce9e92fc7aef6b0776874c2","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        Returns a dict containing image metadata on success."},{"line_number":380,"context_line":"        \"\"\""},{"line_number":381,"context_line":"        client \u003d GlanceClientWrapper()"},{"line_number":382,"context_line":"        try_methods \u003d (\u0027add_image_location\u0027, \u0027add_location\u0027)"},{"line_number":383,"context_line":"        for method in try_methods:"},{"line_number":384,"context_line":"            try:"},{"line_number":385,"context_line":"                return client.call(context, method,"}],"source_content_type":"text/x-python","patch_set":2,"id":"915d916a_a07a1162","line":382,"in_reply_to":"feeb649a_d38f9001","updated":"2025-04-25 20:55:30.000000000","message":"Along the lines of Fernando\u0027s suggestion, I take it that this fallback is only necessary when we\u0027re using a new cinder with an older glance?  Images API v2.17 with new locations api was added to Glance in Dalmatian.  It would be good to add a TODO here to remove the old \u0027add_location\u0027 method when stable/2024.1 goes EOM (since there would no longer be any stable branches that don\u0027t support \u0027add_image_location\u0027).  Or do you think we need to wait until 2024.1 goes EOL?","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"9e3107acbc33e748403ea2c1662681c5b7893727","unresolved":true,"context_lines":[{"line_number":386,"context_line":"                                   image_id, url, metadata)"},{"line_number":387,"context_line":"            except glanceclient.exc.HTTPNotImplemented:"},{"line_number":388,"context_line":"                LOG.debug(\u0027Glance method %s not available\u0027, method)"},{"line_number":389,"context_line":"            except Exception:"},{"line_number":390,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":391,"context_line":"        # required for mypy"},{"line_number":392,"context_line":"        return {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"4f4a251d_43d907e7","line":389,"updated":"2024-12-18 22:48:50.000000000","message":"NIT: Not a big deal at all but testing the scenario of Glance add_image_location and add_location raising a exception different from HTTPNotImplemented would improve test coverage.","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e51890a29cfaa2e902908c4fd30114683cfbd02c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                                   image_id, url, metadata)"},{"line_number":387,"context_line":"            except glanceclient.exc.HTTPNotImplemented:"},{"line_number":388,"context_line":"                LOG.debug(\u0027Glance method %s not available\u0027, method)"},{"line_number":389,"context_line":"            except Exception:"},{"line_number":390,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":391,"context_line":"        # required for mypy"},{"line_number":392,"context_line":"        return {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"50b1172a_858fb984","line":389,"in_reply_to":"4f4a251d_43d907e7","updated":"2025-04-28 19:27:49.000000000","message":"Done","commit_id":"c02bbfcd66c792fa954c50c4307aeb03b50e138d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"0d57ce4bd60d8aa04cc77f563dc9772fec2ec0d8","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1896076c_fd19cac3","line":397,"updated":"2025-07-28 13:23:10.000000000","message":"Seems like this should raise an exception instead of returning {}?","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eac79d540513add7896722302a1102f136b99f9b","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ca843e95_d4ac2c18","line":397,"in_reply_to":"1896076c_fd19cac3","updated":"2025-07-28 13:31:20.000000000","message":"I\u0027m not really sure. On one hand the code should be returned early on if we don\u0027t have any issues (L#390, L#391) but if we have an exception, it will be raised at L#395\nSo really the code will never reach here and this is just done to make mypy happy.\nSo unless we have a better replacement for this, it\u0027s really a no-op and shouldn\u0027t matter right? wdyt?","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c568431a333f0c2a08e6c20dba6caca67b0ebbd5","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"938e9e00_8d86cd48","line":397,"in_reply_to":"1896076c_fd19cac3","updated":"2025-07-28 13:31:03.000000000","message":"if an exception happened, we already reraised it at line 395 ... i guess the real fix here is better use of mypy somehow?  This does return a dict or Exception, not sure how to annotate that properly.","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7c11b390a065548b57313d94718eab25a6e80507","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"336fe1aa_90bfd0f3","line":397,"in_reply_to":"9f38e765_be8f95b5","updated":"2025-07-28 14:27:42.000000000","message":"Done","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"214c1a06a525633c0375926395a299b6c7156b1d","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"d176e868_0aa91020","line":397,"in_reply_to":"ca843e95_d4ac2c18","updated":"2025-07-28 13:39:45.000000000","message":"It\u0027s true that if an exception happened, we already caught it at line 395, except for in the case that both calls hit line 393.  (Which could happen based on what mypy knows about the code.)\n\nIn that situation the method continues to the end, and it seems more correct to raise a ProgrammingError() than to return a value there.\n\nmypy can detect that and will understand that the return value requirement is satisfied.","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"579a0e4bbdd9934ff4510a5620f241db1028b538","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f38e765_be8f95b5","line":397,"in_reply_to":"d176e868_0aa91020","updated":"2025-07-28 14:05:08.000000000","message":"So just to add some context, the HTTPNotImplemented is only raised by the glancelient when the new method ``add_image_location`` doesn\u0027t exist in glance (we are working with an older glance that doesn\u0027t support new location APIs). hitting L#393 with ``add_location`` is not possible since that code has been around forever and doesn\u0027t raise the HTTPNotImplemented when not found.\nBut if we are only talking about mypy\u0027s understanding of the code to finding a way to reach this place, it\u0027s surely possible syntax wise.","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"be3b8462048254539c6d59fa2901072c98e1e274","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            except Exception:"},{"line_number":395,"context_line":"                _reraise_translated_image_exception(image_id)"},{"line_number":396,"context_line":"        # required for mypy"},{"line_number":397,"context_line":"        return {}"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def download(self,"},{"line_number":400,"context_line":"                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"206003d1_57d72037","line":397,"in_reply_to":"d176e868_0aa91020","updated":"2025-07-28 13:59:53.000000000","message":"ok, that makes sense ... so replace line 397 with something like\n\n```\nraise exception.ProgrammingError(\n    reason\u003d\u0027unwarranted assumption about available glanceclient methods\u0027)\n```","commit_id":"84a7e94cb6c7a62659c50b75a32e6d279cb982fb"}]}
