)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"66333fdb9f81585c5e0b8d417954aee65d41ebec","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"2467c24d_3c65bd58","updated":"2026-08-31 21:22:52.000000000","message":"... release note or a bug-report on launchpad.net","commit_id":"70d60208de0b92fa74350186fe3a7e704c9226c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4a47e31ce2b666b2527c6cac7ae1b9618db9f1ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"710fc436_d082ca6a","updated":"2026-08-31 21:17:36.000000000","message":"Functionally, this looks like a bug fix of sorts, to me at least. I\u0027d like to see a release note.","commit_id":"70d60208de0b92fa74350186fe3a7e704c9226c0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0a9a2f63bc09ec063768bba2b8123b83debde5e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"aaedd303_317371e2","in_reply_to":"2467c24d_3c65bd58","updated":"2026-09-01 03:26:15.000000000","message":"Done","commit_id":"70d60208de0b92fa74350186fe3a7e704c9226c0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0a9a2f63bc09ec063768bba2b8123b83debde5e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"880428ee_4c9f8c1f","in_reply_to":"710fc436_d082ca6a","updated":"2026-09-01 03:26:15.000000000","message":"Done","commit_id":"70d60208de0b92fa74350186fe3a7e704c9226c0"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"cce7bcb24e05648d18bfb373af4d24d969ad84a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"45847f9b_f8744c71","updated":"2026-09-28 23:13:43.000000000","message":"Two things:\n1. The conditional casing on no-final-image seems like the sort of thing that would be easy to break without a test. Can we add a test case that covers the necessary bits here (basically make a small simple image and ensure we don\u0027t try to do any steps that would be a problem).\n2. Does this imply the unprivileged container case cannot actually produce a working image from dib and that you must take additional separate independent steps to do so? If that is the case I\u0027m not sure I\u0027m a fan of this approach. I think the fundamental behavior of dib should continue to be \u0027run command, take resulting file, boot said resulting file somewhere\u0027. If we need to take additional or different steps to make that possible maybe that should be part of dib too? Specifically I don\u0027t like the idea of an entire base os element system that is basically there so that you can not use dib for its intended purpose.","commit_id":"4ed75072e28b47d4f827af9919f89daf65ce660a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"523a5b91cbe7f689d1420e442957009f03d391b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8efe609e_13d7e91d","in_reply_to":"45847f9b_f8744c71","updated":"2026-10-28 15:46:02.000000000","message":"1) I agree, we\u0027re likely going to need some testing of some sort.\n2) The answer is functionally yes,","commit_id":"4ed75072e28b47d4f827af9919f89daf65ce660a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"788db4f3c09abab943d32a8681e1882f7cec3d89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6c3c1ba6_73f79187","in_reply_to":"45847f9b_f8744c71","updated":"2026-09-29 21:49:00.000000000","message":"The context for this is that ironic-python-agent-builder has been responsible for generating its own bootable artefact[1] since it has existed. It turns out local loop device creation was still running after that. The extra operations and data copying added minute of time to the ironic-python-agent-check-image-dib-centos9 job (based on 2 data points).\n\nI think the existing ironic-python-agent-check-image-dib-centos9 already provides coverage for the no-final-image element in general, and potential regressions for this change specifically.\n\nThe actual capabilities and system bind mounts required depend on the artefact being produced. With this change, ironic-python-agent-builder requires CAP_SYS_ADMIN. A qcow2 with a minimal block device layout would require more, but even full privileges and system bind mounts would be acceptable to some end users if it allows them to have dib running in the container environments that are now a significant portion of their infra.\n\n[1] https://github.com/openstack/ironic-python-agent-builder/blob/master/dib/ironic-ramdisk-base/cleanup.d/99-ramdisk-create","commit_id":"4ed75072e28b47d4f827af9919f89daf65ce660a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"1b56b085ab175b4b75329d98d78f53e412744a5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e43e4348_41f685ff","updated":"2026-09-30 21:27:46.000000000","message":"recheck cloud.centos.org 502","commit_id":"3a8dccb74e8541cd7e08bf1460d5ef01d546e43d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"523a5b91cbe7f689d1420e442957009f03d391b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"11ffa5c4_8e2d7cec","updated":"2026-10-28 15:46:02.000000000","message":"LGTM","commit_id":"ac781a1f0349692bad9e63f66eb7fdfc78f6db0e"}],"releasenotes/notes/ll-no-final-image-c8b336d5022ecd83.yaml":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"eabac626053fbebd8fa09f6b102ce8a330b71093","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When the `no-final-image` element is used (e.g. for ironic-python-agent"},{"line_number":5,"context_line":"    ramdisk or Docker image builds), diskimage-builder previously still"},{"line_number":6,"context_line":"    created block device configuration, allocated loop devices, wrote"},{"line_number":7,"context_line":"    partition tables, and formatted filesystems -- all of which were"},{"line_number":8,"context_line":"    immediately discarded since no final image is produced. This caused"},{"line_number":9,"context_line":"    unnecessary overhead and, more critically, caused builds to fail in"},{"line_number":10,"context_line":"    unprivileged container environments where loop devices and device-mapper"},{"line_number":11,"context_line":"    are unavailable."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    The build script now skips all block device operations"},{"line_number":14,"context_line":"    when `no-final-image` is present. Image type conversions are also"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"92545254_6568bd9b","line":11,"range":{"start_line":4,"start_character":4,"end_line":11,"end_character":20},"updated":"2026-09-01 07:29:51.000000000","message":"```suggestion\n    When the no-final-image element is used, diskimage-builder still creates block device configurations, allocates loop devices, writes partition tables, formats filesystems, but all of these are immediately discarded because no final image has been produced. This causes unnecessary overhead and more critically causes builds to fail in unprivileged containers where loop devices or device-mapper is unavailable.\n```","commit_id":"639425800e4131eb4915f97bf6d24c91da5b94c9"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"451eb1a1bf25fa4265060c42604bdea20d03b115","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When the `no-final-image` element is used (e.g. for ironic-python-agent"},{"line_number":5,"context_line":"    ramdisk or Docker image builds), diskimage-builder previously still"},{"line_number":6,"context_line":"    created block device configuration, allocated loop devices, wrote"},{"line_number":7,"context_line":"    partition tables, and formatted filesystems -- all of which were"},{"line_number":8,"context_line":"    immediately discarded since no final image is produced. This caused"},{"line_number":9,"context_line":"    unnecessary overhead and, more critically, caused builds to fail in"},{"line_number":10,"context_line":"    unprivileged container environments where loop devices and device-mapper"},{"line_number":11,"context_line":"    are unavailable."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    The build script now skips all block device operations"},{"line_number":14,"context_line":"    when `no-final-image` is present. Image type conversions are also"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"cb367821_fe90756c","line":11,"range":{"start_line":4,"start_character":4,"end_line":11,"end_character":20},"in_reply_to":"92545254_6568bd9b","updated":"2026-09-28 21:42:23.000000000","message":"Done","commit_id":"639425800e4131eb4915f97bf6d24c91da5b94c9"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"eabac626053fbebd8fa09f6b102ce8a330b71093","unresolved":true,"context_lines":[{"line_number":14,"context_line":"    when `no-final-image` is present. Image type conversions are also"},{"line_number":15,"context_line":"    disabled, and the cleanup path no longer attempts to call the block device"},{"line_number":16,"context_line":"    tool to unmount devices that were never created. The populated chroot is"},{"line_number":17,"context_line":"    used directly for the finalise and cleanup phases."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"d9ef8a7f_350f4834","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":34},"updated":"2026-09-01 07:29:51.000000000","message":"finalize\n```suggestion\n    used directly for the finalize and cleanup phases.\n```","commit_id":"639425800e4131eb4915f97bf6d24c91da5b94c9"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"9d0be251bc44c74792535e8d21b250ec71a3a181","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    when `no-final-image` is present. Image type conversions are also"},{"line_number":15,"context_line":"    disabled, and the cleanup path no longer attempts to call the block device"},{"line_number":16,"context_line":"    tool to unmount devices that were never created. The populated chroot is"},{"line_number":17,"context_line":"    used directly for the finalise and cleanup phases."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1eb4e4f5_2941ec2d","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":34},"in_reply_to":"b8f374b0_32ee9f3c","updated":"2026-09-28 22:55:54.000000000","message":"Acknowledged","commit_id":"639425800e4131eb4915f97bf6d24c91da5b94c9"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"451eb1a1bf25fa4265060c42604bdea20d03b115","unresolved":true,"context_lines":[{"line_number":14,"context_line":"    when `no-final-image` is present. Image type conversions are also"},{"line_number":15,"context_line":"    disabled, and the cleanup path no longer attempts to call the block device"},{"line_number":16,"context_line":"    tool to unmount devices that were never created. The populated chroot is"},{"line_number":17,"context_line":"    used directly for the finalise and cleanup phases."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"b8f374b0_32ee9f3c","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":34},"in_reply_to":"d9ef8a7f_350f4834","updated":"2026-09-28 21:42:23.000000000","message":"This is the correct spelling for my country, and openstack has long accepted either UK or US spelling variants.","commit_id":"639425800e4131eb4915f97bf6d24c91da5b94c9"}]}
