)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b7f39ef41a76cd5fbb350f960931c2d352f5b769","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4aee262b_570aaa80","updated":"2024-09-11 12:39:35.000000000","message":"Is this ready to go now?","commit_id":"f55318cc1c1bdbd8401ae981f27ee495ca203424"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ed3bc173a9c72ee042130409eb4d909b79cdec4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4851c89d_d3aeace5","updated":"2024-09-11 15:11:39.000000000","message":"No, I got waylaid by personal issues on Monday and now the unmaintained/* regression, I\u0027ll revisit it soon.","commit_id":"f55318cc1c1bdbd8401ae981f27ee495ca203424"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"31c1ead9f91c04ef95eed084478ab05049135f76","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d38ccaa1_2d10b10b","updated":"2024-09-06 17:34:20.000000000","message":"Pushing this in bits so I can ensure CI is passing at each step, but I\u0027m going to do a little bit more refactoring before I want this chain to land.","commit_id":"f55318cc1c1bdbd8401ae981f27ee495ca203424"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"26d82d96c2c1cdd6f57d9f688acee0bac73dd45a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0901a75c_dfdf0933","updated":"2024-10-23 20:32:06.000000000","message":"Unsure followups are the right thing to do here, comments inline.","commit_id":"4553b5c025a00cda2e6398f1370fda46ed6c97f9"}],"ironic_python_agent/disk_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b1490379c104170386bbddfe98f9d166376b30c2","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        inspector_cls.safety_check()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    except format_inspector.ImageFormatError:"},{"line_number":404,"context_line":"        msg \u003d \"Security: Image matched multiple potential formats\""},{"line_number":405,"context_line":"        LOG.exception(msg)"},{"line_number":406,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"40687806_e977324f","line":404,"updated":"2024-09-23 11:04:09.000000000","message":"Please include the error message in logging (now we can do it)","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"c71d4e83ad5454cf2339ed1986dfb51431e8a961","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        inspector_cls.safety_check()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    except format_inspector.ImageFormatError:"},{"line_number":404,"context_line":"        msg \u003d \"Security: Image matched multiple potential formats\""},{"line_number":405,"context_line":"        LOG.exception(msg)"},{"line_number":406,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7e440290_ff4c76f1","line":404,"in_reply_to":"0bee9383_618a051c","updated":"2024-10-23 20:32:34.000000000","message":"**to a place only the CLOUD OPERATOR can see** (e.g.: not in node.last_error, but in IPA logs)","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"26d82d96c2c1cdd6f57d9f688acee0bac73dd45a","unresolved":true,"context_lines":[{"line_number":401,"context_line":"        inspector_cls.safety_check()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    except format_inspector.ImageFormatError:"},{"line_number":404,"context_line":"        msg \u003d \"Security: Image matched multiple potential formats\""},{"line_number":405,"context_line":"        LOG.exception(msg)"},{"line_number":406,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"0bee9383_618a051c","line":404,"in_reply_to":"40687806_e977324f","updated":"2024-10-23 20:32:06.000000000","message":"These are intentionally omitted for security reasons. We don\u0027t want to provide direct feedback to the deploying API user in this case, so we don\u0027t put the details in the exception message that ends up passed back to Ironic. We *do* use LOG.exception() which should log the full response, including the exact error message, to a place only the operator can see.\n\nIs there something I\u0027m missing?","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c48d1224a2c72275c376fefb80f5378f81f0c2b8","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        inspector_cls.safety_check()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    except format_inspector.ImageFormatError:"},{"line_number":404,"context_line":"        msg \u003d \"Security: Image matched multiple potential formats\""},{"line_number":405,"context_line":"        LOG.exception(msg)"},{"line_number":406,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e8d9b2ce_fb5dfdc2","line":404,"in_reply_to":"7e440290_ff4c76f1","updated":"2024-10-24 07:44:58.000000000","message":"LOG.exception is the bit I missed, thank","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b1490379c104170386bbddfe98f9d166376b30c2","unresolved":true,"context_lines":[{"line_number":406,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    except format_inspector.SafetyCheckFailed:"},{"line_number":409,"context_line":"        msg \u003d \"Security: Image failed safety check\""},{"line_number":410,"context_line":"        LOG.exception(msg)"},{"line_number":411,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da5102cd_77035c53","line":409,"updated":"2024-09-23 11:04:09.000000000","message":"Same","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e50f30d53dd5308b5d6baa0c0cf08fdbedf94608","unresolved":true,"context_lines":[{"line_number":439,"context_line":"        img_format \u003d data.file_format"},{"line_number":440,"context_line":"        size \u003d data.virtual_size"},{"line_number":441,"context_line":"    else:"},{"line_number":442,"context_line":"        if ironic_disk_format \u003d\u003d \u0027raw\u0027:"},{"line_number":443,"context_line":"            # NOTE(JayF): IPA unconditionally writes raw images to disk without"},{"line_number":444,"context_line":"            #             conversion with dd or raw python, not qemu-img, it\u0027s"},{"line_number":445,"context_line":"            #             not required to safety check raw images."}],"source_content_type":"text/x-python","patch_set":2,"id":"2b6a016f_5cbbb829","line":442,"updated":"2024-09-23 11:07:11.000000000","message":"You may face the same problem as my ironic patch: whole disk images have format \"gpt\"","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"26d82d96c2c1cdd6f57d9f688acee0bac73dd45a","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        img_format \u003d data.file_format"},{"line_number":440,"context_line":"        size \u003d data.virtual_size"},{"line_number":441,"context_line":"    else:"},{"line_number":442,"context_line":"        if ironic_disk_format \u003d\u003d \u0027raw\u0027:"},{"line_number":443,"context_line":"            # NOTE(JayF): IPA unconditionally writes raw images to disk without"},{"line_number":444,"context_line":"            #             conversion with dd or raw python, not qemu-img, it\u0027s"},{"line_number":445,"context_line":"            #             not required to safety check raw images."}],"source_content_type":"text/x-python","patch_set":2,"id":"45d72968_e00b561d","line":442,"in_reply_to":"29ea23a9_83197b40","updated":"2024-10-23 20:32:06.000000000","message":"Done","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9999bb7b4effc00e10a02fed9078bae2e5f9bcb7","unresolved":true,"context_lines":[{"line_number":439,"context_line":"        img_format \u003d data.file_format"},{"line_number":440,"context_line":"        size \u003d data.virtual_size"},{"line_number":441,"context_line":"    else:"},{"line_number":442,"context_line":"        if ironic_disk_format \u003d\u003d \u0027raw\u0027:"},{"line_number":443,"context_line":"            # NOTE(JayF): IPA unconditionally writes raw images to disk without"},{"line_number":444,"context_line":"            #             conversion with dd or raw python, not qemu-img, it\u0027s"},{"line_number":445,"context_line":"            #             not required to safety check raw images."}],"source_content_type":"text/x-python","patch_set":2,"id":"29ea23a9_83197b40","line":442,"in_reply_to":"2b6a016f_5cbbb829","updated":"2024-09-23 15:06:36.000000000","message":"++ I have a note to test specifically around this. I think the right path might end up being seeing if we can get oslo.utils to keep a RAW_IMAGE_TYPES or similar public constant we can check. I don\u0027t want us to have to chase it at the edges.","commit_id":"2ce989e66fdc5ad47517c616439c2cf9b4fd53c3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c1955a6c092f07b5cf44116071c0e1c2cb6ff9c","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"    except format_inspector.ImageFormatError:"},{"line_number":407,"context_line":"        msg \u003d \"Security: Image matched multiple potential formats\""},{"line_number":408,"context_line":"        LOG.exception(msg)"},{"line_number":409,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    except format_inspector.SafetyCheckFailed:"}],"source_content_type":"text/x-python","patch_set":4,"id":"e1022e33_f0767d6b","line":408,"updated":"2024-10-21 12:42:19.000000000","message":"Please include the actual error in the mssage","commit_id":"4553b5c025a00cda2e6398f1370fda46ed6c97f9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c1955a6c092f07b5cf44116071c0e1c2cb6ff9c","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    except format_inspector.SafetyCheckFailed:"},{"line_number":412,"context_line":"        msg \u003d \"Security: Image failed safety check\""},{"line_number":413,"context_line":"        LOG.exception(msg)"},{"line_number":414,"context_line":"        raise errors.InvalidImage(details\u003dmsg)"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"c0d98cae_27769c79","line":412,"updated":"2024-10-21 12:42:19.000000000","message":"same","commit_id":"4553b5c025a00cda2e6398f1370fda46ed6c97f9"}]}
