)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"55e76ed744e9aabd8e21de344c5c40cbe78da7f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ef829690_3c8e23a9","updated":"2026-07-06 07:37:17.000000000","message":"I also found https://github.com/openstack/cyborg/blob/master/cyborg/conf/glance.py#L41\n```\n    cfg.BoolOpt(\n        \u0027debug\u0027,\n        default\u003dFalse,\n        help\u003d\u0027Enable or disable debug logging with glanceclient.\u0027,\n    ),\n```\nCan be safely dropped, it is not used anywhere.","commit_id":"50c0d602a167886439c9cc8e10f012cd23be132f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ebf0ce15886889198f6e9f073f896fed4a435951","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bd883f38_5578c946","updated":"2026-07-08 16:13:49.000000000","message":"we recently removed a half implmetied image verifcation feature\nthese do look like they are redundantbut we will also be droping most of htis code soon when we swap to using the sdk for talking to glance","commit_id":"3021fae95db75f86915d31e9ee51d72475f37ba8"}],"cyborg/image/glance.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d64e2a428f96f924fef6f1d768524b6c005b1e31","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        \"\"\"Calls out to Glance for data and writes data.\"\"\""},{"line_number":201,"context_line":"        try:"},{"line_number":202,"context_line":"            image_chunks \u003d self._client.call(context, 2, \u0027data\u0027, image_id)"},{"line_number":203,"context_line":"        except ("},{"line_number":204,"context_line":"            glanceclient.exc.HTTPForbidden,"},{"line_number":205,"context_line":"            glanceclient.exc.HTTPUnauthorized,"},{"line_number":206,"context_line":"        ):"}],"source_content_type":"text/x-python","patch_set":4,"id":"c0d38107_aba71329","line":203,"updated":"2026-07-01 16:05:04.000000000","message":"Narrowing the catch to only HTTPForbidden/HTTPUnauthorized/HTTPNotFound/HTTPBadRequest silently drops translation coverage for other Glance failures (e.g. HTTPServerError, HTTPConflict), which now propagate raw instead of being surfaced as cyborg exceptions.\n\n**Severity**: HIGH | **Confidence**: 0.8\n\n**Risk**: Callers expecting cyborg.common.exception types may receive raw glanceclient exceptions for server-side or unexpected errors, producing inconsistent error reporting and potentially leaking unhelpful tracebacks.\n\n**Priority**: Before merge\n**Why This Matters**: Behavior change to a production image-download path. The narrowed handlers are an improvement in specificity, but the loss of any fallthrough translation should be a conscious decision rather than an accidental side effect of the cleanup.\n\n**Recommendation**:\nEither document that non-translated glanceclient exceptions now propagate by design, or add a trailing \u0027except glanceclient.exc.HTTPException as e:\u0027 (or a small translate helper) to preserve a translation path for unexpected HTTP errors. Note GlanceClientWrapper.call() already converts CommunicationError into GlanceConnectionFailed, so 5xx/transient HTTP errors are the main gap.","commit_id":"e733bccd4959b37fd492b6196cd4805594f9ca92"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d64e2a428f96f924fef6f1d768524b6c005b1e31","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        \"\"\"Calls out to Glance for data and writes data.\"\"\""},{"line_number":201,"context_line":"        try:"},{"line_number":202,"context_line":"            image_chunks \u003d self._client.call(context, 2, \u0027data\u0027, image_id)"},{"line_number":203,"context_line":"        except ("},{"line_number":204,"context_line":"            glanceclient.exc.HTTPForbidden,"},{"line_number":205,"context_line":"            glanceclient.exc.HTTPUnauthorized,"},{"line_number":206,"context_line":"        ):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0c50e26c_35beb6cb","line":203,"updated":"2026-07-01 16:05:04.000000000","message":"The three translated exceptions in download() could share a small local helper to avoid repeating the image_id parameter and to keep the inline translation tidy, mirroring the intent of the removed _translate_image_exception without re-introducing a module-level function.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Improves readability and makes future addition of further HTTP-status translations (e.g. HTTPConflict) a one-line change, reducing the risk of the kind of binding mistake currently present.\n\n**Recommendation**:\nOptional cleanup only; not blocking. If adopted, ensure every branch binds the exception with \u0027as e\u0027 where its value is used.","commit_id":"e733bccd4959b37fd492b6196cd4805594f9ca92"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"d64e2a428f96f924fef6f1d768524b6c005b1e31","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            raise exception.ResourceNotFound("},{"line_number":212,"context_line":"                resource\u003d\u0027Image\u0027, msg\u003d\u0027with uuid\u003d%s\u0027 % image_id"},{"line_number":213,"context_line":"            )"},{"line_number":214,"context_line":"        except glanceclient.exc.HTTPBadRequest:"},{"line_number":215,"context_line":"            raise exception.ImageBadRequest("},{"line_number":216,"context_line":"                image_id\u003dimage_id, response\u003dstr(e)"},{"line_number":217,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"85d83830_f5c5ef09","line":214,"updated":"2026-07-01 16:05:04.000000000","message":"Undefined name \u0027e\u0027: the new except clauses in download() use \u0027except \u003cExc\u003e:\u0027 without \u0027as e\u0027, yet the HTTPBadRequest branch references str(e) (line 216), raising NameError whenever Glance returns HTTPBadRequest and masking the original error.\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: Runtime crash: any HTTPBadRequest from Glance during image download triggers NameError instead of the intended ImageBadRequest, hiding the real failure from operators and callers.\n\n**Priority**: Immediate\n**Why This Matters**: This is the live error path for bad image requests. A NameError here defeats the entire purpose of the inlined exception translation and will surface as an unrelated, confusing traceback during real deployments.\n\n**Recommendation**:\nBind the exception on each handler that needs it. At minimum: \u0027except glanceclient.exc.HTTPBadRequest as e:\u0027. Prefer binding \u0027as e\u0027 on all four handlers (HTTPForbidden/HTTPUnauthorized, HTTPNotFound, HTTPBadRequest) for consistency and future-proofing, mirroring the prior _translate_image_exception(str(exc_value)) behavior.","commit_id":"e733bccd4959b37fd492b6196cd4805594f9ca92"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8c1c03e0b6a0c4a92ee96afa12f451d4adc203a3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2010 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"fd5b0178_00f526e7","line":1,"updated":"2026-07-01 17:27:23.000000000","message":"No reno release note was added for this change even though it removes several module-level functions (generate_glance_url, generate_identity_headers, UpdateGlanceImage) and a class that could be referenced by out-of-tree consumers or plugins.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Downstream consumers relying on these symbols get an AttributeError at runtime with no documented deprecation or removal notice, making the breakage harder to diagnose.\n\n**Suggestion**:\nAdd a reno release note under releasenotes/notes/ describing the removal of unused glance image utilities. If any removed names are part of a public API surface, consider a deprecation cycle instead of a hard removal.","commit_id":"50c0d602a167886439c9cc8e10f012cd23be132f"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8c1c03e0b6a0c4a92ee96afa12f451d4adc203a3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        if not any(check(mode) for check in (stat.S_ISFIFO, stat.S_ISSOCK)):"},{"line_number":197,"context_line":"            os.fsync(fileno)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def download(self, context, image_id, data\u003dNone, dst_path\u003dNone):"},{"line_number":200,"context_line":"        \"\"\"Calls out to Glance for data and writes data.\"\"\""},{"line_number":201,"context_line":"        try:"},{"line_number":202,"context_line":"            image_chunks \u003d self._client.call(context, 2, \u0027data\u0027, image_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"0c5b6a2f_308c1a04","line":199,"updated":"2026-07-01 17:27:23.000000000","message":"The deleted unit test (cyborg/tests/unit/image/test_glance.py) tested exception translation which is now inlined into download(); no replacement test covers the newly inlined translation paths in GlanceImageServiceV2.download.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: A unit test mocking the glance client call to raise HTTPForbidden/HTTPNotFound/HTTPBadRequest would verify the inlined translation produces the expected ImageNotAuthorized/ResourceNotFound/ImageBadRequest, guarding against regressions.\n\n**Recommendation**:\nAdd a focused unit test in cyborg/tests/unit/image/ that exercises GlanceImageServiceV2.download with each of the three mapped glance exceptions and asserts the correct cyborg exception is raised.","commit_id":"50c0d602a167886439c9cc8e10f012cd23be132f"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"8c1c03e0b6a0c4a92ee96afa12f451d4adc203a3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        if not any(check(mode) for check in (stat.S_ISFIFO, stat.S_ISSOCK)):"},{"line_number":197,"context_line":"            os.fsync(fileno)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def download(self, context, image_id, data\u003dNone, dst_path\u003dNone):"},{"line_number":200,"context_line":"        \"\"\"Calls out to Glance for data and writes data.\"\"\""},{"line_number":201,"context_line":"        try:"},{"line_number":202,"context_line":"            image_chunks \u003d self._client.call(context, 2, \u0027data\u0027, image_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"c7ca0d51_46ed5963","line":199,"updated":"2026-07-01 17:27:23.000000000","message":"The inlined exception handlers in download() catch HTTPForbidden/HTTPUnauthorized, HTTPNotFound, and HTTPBadRequest, but the old _translate_image_exception also re-raised unrecognized exceptions unchanged. Other glanceclient HTTP errors now propagate raw instead of as cyborg exceptions.\n\n**Severity**: SUGGESTION | **Confidence**: 0.7\n\n**Benefit**: Documenting this narrower behaviour explicitly, or adding a trailing except for unexpected glanceclient.exc.HttpError mapped to a generic cyborg exception, keeps the API contract consistent for callers expecting cyborg-domain exceptions from this layer.\n\n**Recommendation**:\nEither add a comment noting that only the three previously-translated exception types are mapped and others intentionally propagate, or add a final except glanceclient.exc.HttpError branch mapping to a generic exception to preserve full coverage.","commit_id":"50c0d602a167886439c9cc8e10f012cd23be132f"}],"cyborg/tests/unit/image/test_glance.py":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"55e76ed744e9aabd8e21de344c5c40cbe78da7f0","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"e90d7046_e3091622","side":"PARENT","line":1,"updated":"2026-07-06 07:37:17.000000000","message":"https://github.com/openstack/cyborg/tree/master/cyborg/tests/unit/image only __init__.py is left, We can delete this whole directory.","commit_id":"cec1b79ea275aa4934b8619d92ef72e8b9f41832"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"04e09148a1b3a2bcd7dbd057308b2a86abf2d410","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"a418e9a5_76a4dea6","side":"PARENT","line":1,"in_reply_to":"3c66e44d_bc1d9461","updated":"2026-07-08 16:15:40.000000000","message":"Oh, that\u0027s a good spot !","commit_id":"cec1b79ea275aa4934b8619d92ef72e8b9f41832"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ebf0ce15886889198f6e9f073f896fed4a435951","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"3c66e44d_bc1d9461","side":"PARENT","line":1,"in_reply_to":"e90d7046_e3091622","updated":"2026-07-08 16:13:49.000000000","message":"+1","commit_id":"cec1b79ea275aa4934b8619d92ef72e8b9f41832"}]}
