)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c819d1ca94c8eee80e53f3ed35082a2b052bf9d2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michal Nasiadka \u003cmnasiadka@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-11-04 13:06:51 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add LVM based image support to MD scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ie56d8cc7800ca64859c4e9cdf7511fd78b6f3a51"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"73a2f399_cd8c19f7","line":7,"updated":"2021-11-18 13:04:34.000000000","message":"Could you add some unit tests and a release note?","commit_id":"5fd1a5b2c8172126b08606e6788214320252a019"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"1697e56c510282419fe502896e8e7f667bfaa731","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michal Nasiadka \u003cmnasiadka@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-11-04 13:06:51 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add LVM based image support to MD scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ie56d8cc7800ca64859c4e9cdf7511fd78b6f3a51"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"c3ce95e9_52d37ce7","line":7,"in_reply_to":"73a2f399_cd8c19f7","updated":"2021-11-18 13:21:38.000000000","message":"Will do, just came back from vacation, so allow for a couple of days ;-)","commit_id":"5fd1a5b2c8172126b08606e6788214320252a019"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"b9b5a94a5d357f685723e70c05755635dd14b161","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cc00c7b7_fd3ddc43","updated":"2021-11-25 06:47:44.000000000","message":"Unit tests to follow","commit_id":"a658eeeb4ba54b10d124882cf31b46a3c0f4d13d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"005df31c11d0789a635f366ad03c0829ecc68bbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"aa60cc81_e4183f1a","updated":"2021-12-16 17:19:23.000000000","message":"\u003e Patch Set 6:\n\u003e \n\u003e You mentioned you were going to add unit tests, do you still plan on?\n\nI do, will look into that next week, my $job got me overwhelmed on a customer deployment ;-)","commit_id":"8c74cafaf457be4108dc4d24c7da618f350b2715"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b119c32b7c5da05361e78c575ba3aab57372f08d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"333b091b_7b6e386a","in_reply_to":"aa60cc81_e4183f1a","updated":"2022-01-20 19:17:43.000000000","message":"Ack, thanks. Just a reminder. :)","commit_id":"8c74cafaf457be4108dc4d24c7da618f350b2715"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d44b07c5fd167f2fa6517df90f0ec8032d860dae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"32066845_6ff37890","updated":"2022-07-12 16:14:09.000000000","message":"Adding steve baker as he is presently doing some LVM related work as well.","commit_id":"7b90acbd2e9d1e1be40c148afcfe7b3a8ffdee2e"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b3d00e76bc53f4745c7fa76b49b40ff58d5e2439","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7289790f_7308ff65","updated":"2022-07-12 21:55:42.000000000","message":"Looks good, but the unit test failure is definitely related","commit_id":"7b90acbd2e9d1e1be40c148afcfe7b3a8ffdee2e"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"979ad1c6f16ec3729871dbadf55af5bcae49ca7a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"89aeaeca_8f653d86","in_reply_to":"7289790f_7308ff65","updated":"2022-07-13 08:21:33.000000000","message":"I spent a bit of time on this, but don\u0027t have details of the original issue to be able to reproduce properly in unit tests.\n\nThe test I added does highlight that the new code doesn\u0027t really know the difference between partitions and LVM volumes. unsure whether it matters.","commit_id":"7b90acbd2e9d1e1be40c148afcfe7b3a8ffdee2e"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"0813e574539f19d751a0a16e545d2bd9fec25558","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a44e2cba_27903fc2","in_reply_to":"89aeaeca_8f653d86","updated":"2024-07-08 11:14:46.000000000","message":"I\u0027m not sure if I understand unit tests approach here correctly - the initial issue was that IPA could get the existing LVM layout from previously created MD - therefore \"dmsetup remove_all\" to clean it up and allow \"mdadm --stop;mdadm --assemble\" to run in md_restart.\n\nSo to be able to test it, we\u0027d need to mock also lvm layout for md_restart to clean/assemble MD. \n\nIs that what we want to do here? Is it maybe a something for broader lvm unit tests support in IPA change?","commit_id":"7b90acbd2e9d1e1be40c148afcfe7b3a8ffdee2e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"27e96e3803cb34cbb07055fb1fc00129c536dda7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4a4e514a_46d7bb48","updated":"2024-05-10 21:02:34.000000000","message":"Some more work is required since we can\u0027t just expect everyone is going to do lvm raid.","commit_id":"30ae9fcc3ed6419106f7d08fc639e7023d9650fe"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"86be17d34c54611a567d07923cba52d812143ec2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"7ef43445_c4318501","updated":"2025-11-22 19:09:21.000000000","message":"@james.denton@outlook.com weren’t you interested in this?","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"},{"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":"8fd5f959589473265d23ab84143e243725bd478d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"fc0ece3f_76efae66","updated":"2026-02-10 18:12:37.000000000","message":"Highlighting the comments; they should be addressed before this merges. Thank you for the contribution.\n\nThis is part of a GR-OSS team group review.","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"932eb89bd4f863b5fb4c45a103418d22a16ecb6c","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027)[0]"},{"line_number":331,"context_line":"        if not dmsetup_table:"},{"line_number":332,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":333,"context_line":"            utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":334,"context_line":"        component_devices \u003d _get_component_devices(raid_device)"}],"source_content_type":"text/x-python","patch_set":2,"id":"64670c3d_86d0deb7","line":331,"updated":"2021-11-05 15:47:26.000000000","message":"Isn\u0027t this always false (since stdout either reports the devices or \"No devices found\")?","commit_id":"5fd1a5b2c8172126b08606e6788214320252a019"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c819d1ca94c8eee80e53f3ed35082a2b052bf9d2","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027)[0]"},{"line_number":331,"context_line":"        if not dmsetup_table:"},{"line_number":332,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":333,"context_line":"            utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":334,"context_line":"        component_devices \u003d _get_component_devices(raid_device)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dec54fbb_a8e1ebde","line":331,"updated":"2021-11-18 13:04:34.000000000","message":"Yeah, and it seems to send it to stdout with a 0 exit code. I guess we need to use_standard_locale\u003dTrue and check the literal output.","commit_id":"5fd1a5b2c8172126b08606e6788214320252a019"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"89bde268ff3941af00089b1ec58c6a884ce9e0fc","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027)[0]"},{"line_number":331,"context_line":"        if not dmsetup_table:"},{"line_number":332,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":333,"context_line":"            utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":334,"context_line":"        component_devices \u003d _get_component_devices(raid_device)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9b9a9a80_fa62e98e","line":331,"in_reply_to":"64670c3d_86d0deb7","updated":"2023-10-03 12:33:59.000000000","message":"Ack","commit_id":"5fd1a5b2c8172126b08606e6788214320252a019"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"92be8db17a55ca152664e0b38a6ca3f56ed6199f","unresolved":true,"context_lines":[{"line_number":327,"context_line":"        LOG.debug(\u0027Restarting software RAID device %s\u0027, raid_device)"},{"line_number":328,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":331,"context_line":"                                      use_standard_locale\u003dTrue)"},{"line_number":332,"context_line":"        if \u0027No devices found\u0027 not in str(dmsetup_table):"},{"line_number":333,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aad6c73_340c36e7","line":330,"updated":"2021-11-25 09:37:42.000000000","message":"s/utils/il_utils/ for consistency","commit_id":"a658eeeb4ba54b10d124882cf31b46a3c0f4d13d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"89bde268ff3941af00089b1ec58c6a884ce9e0fc","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        LOG.debug(\u0027Restarting software RAID device %s\u0027, raid_device)"},{"line_number":328,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":331,"context_line":"                                      use_standard_locale\u003dTrue)"},{"line_number":332,"context_line":"        if \u0027No devices found\u0027 not in str(dmsetup_table):"},{"line_number":333,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2bf384d0_3223639d","line":330,"in_reply_to":"9aad6c73_340c36e7","updated":"2023-10-03 12:33:59.000000000","message":"Done","commit_id":"a658eeeb4ba54b10d124882cf31b46a3c0f4d13d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"92be8db17a55ca152664e0b38a6ca3f56ed6199f","unresolved":true,"context_lines":[{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":331,"context_line":"                                      use_standard_locale\u003dTrue)"},{"line_number":332,"context_line":"        if \u0027No devices found\u0027 not in str(dmsetup_table):"},{"line_number":333,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":334,"context_line":"            utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":335,"context_line":"        component_devices \u003d _get_component_devices(raid_device)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2a4b643a_74b26b79","line":332,"updated":"2021-11-25 09:37:42.000000000","message":"You don\u0027t need str(), but you do need to take one item of the tuple (stdout, stderr).","commit_id":"a658eeeb4ba54b10d124882cf31b46a3c0f4d13d"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"89bde268ff3941af00089b1ec58c6a884ce9e0fc","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":330,"context_line":"        dmsetup_table \u003d utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":331,"context_line":"                                      use_standard_locale\u003dTrue)"},{"line_number":332,"context_line":"        if \u0027No devices found\u0027 not in str(dmsetup_table):"},{"line_number":333,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":334,"context_line":"            utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":335,"context_line":"        component_devices \u003d _get_component_devices(raid_device)"}],"source_content_type":"text/x-python","patch_set":4,"id":"41f94d4b_e2c82b89","line":332,"in_reply_to":"2a4b643a_74b26b79","updated":"2023-10-03 12:33:59.000000000","message":"Done","commit_id":"a658eeeb4ba54b10d124882cf31b46a3c0f4d13d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"27e96e3803cb34cbb07055fb1fc00129c536dda7","unresolved":true,"context_lines":[{"line_number":609,"context_line":"                    {\u0027device_raw\u0027: device_raw})"},{"line_number":610,"context_line":"            elif (devtype \u003d\u003d \u0027md\u0027"},{"line_number":611,"context_line":"                  and (block_type \u003d\u003d \u0027part\u0027"},{"line_number":612,"context_line":"                       or block_type \u003d\u003d \u0027md\u0027)):"},{"line_number":613,"context_line":"                # NOTE(dszumski): Partitions on software RAID devices have type"},{"line_number":614,"context_line":"                # \u0027md\u0027. This may also contain RAID devices in a broken state in"},{"line_number":615,"context_line":"                # rare occasions. See https://review.opendev.org/#/c/670807 for"}],"source_content_type":"text/x-python","patch_set":13,"id":"dd4d802f_f8536195","side":"PARENT","line":612,"range":{"start_line":612,"start_character":21,"end_line":612,"end_character":47},"updated":"2024-05-10 21:02:34.000000000","message":"md devices still need to be checked.","commit_id":"c303bd971b055f34d5725550ed41c7d67e3eaeb5"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"b2bec3a6df4cc32ecbe629d78875498eb24dc895","unresolved":false,"context_lines":[{"line_number":609,"context_line":"                    {\u0027device_raw\u0027: device_raw})"},{"line_number":610,"context_line":"            elif (devtype \u003d\u003d \u0027md\u0027"},{"line_number":611,"context_line":"                  and (block_type \u003d\u003d \u0027part\u0027"},{"line_number":612,"context_line":"                       or block_type \u003d\u003d \u0027md\u0027)):"},{"line_number":613,"context_line":"                # NOTE(dszumski): Partitions on software RAID devices have type"},{"line_number":614,"context_line":"                # \u0027md\u0027. This may also contain RAID devices in a broken state in"},{"line_number":615,"context_line":"                # rare occasions. See https://review.opendev.org/#/c/670807 for"}],"source_content_type":"text/x-python","patch_set":13,"id":"47a7c0e5_224cd8a8","side":"PARENT","line":612,"range":{"start_line":612,"start_character":21,"end_line":612,"end_character":47},"in_reply_to":"dd4d802f_f8536195","updated":"2024-07-08 12:29:05.000000000","message":"Done","commit_id":"c303bd971b055f34d5725550ed41c7d67e3eaeb5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"27e96e3803cb34cbb07055fb1fc00129c536dda7","unresolved":true,"context_lines":[{"line_number":617,"context_line":"                    {\u0027device_raw\u0027: device_raw})"},{"line_number":618,"context_line":"            elif (devtype \u003d\u003d \u0027md\u0027"},{"line_number":619,"context_line":"                  and (block_type \u003d\u003d \u0027part\u0027"},{"line_number":620,"context_line":"                       or block_type \u003d\u003d \u0027lvm\u0027)):"},{"line_number":621,"context_line":"                # NOTE(dszumski): Partitions and LVM volumes on software RAID"},{"line_number":622,"context_line":"                # devices have type \u0027md\u0027. This may also contain RAID devices in"},{"line_number":623,"context_line":"                # a broken state in rare occasions. See"}],"source_content_type":"text/x-python","patch_set":13,"id":"4245b603_714873d7","line":620,"range":{"start_line":620,"start_character":22,"end_line":620,"end_character":48},"updated":"2024-05-10 21:02:34.000000000","message":"slight problem with only checking an lvm device as a partition of a disk, you can have an entire physical device as an lvm pv.","commit_id":"30ae9fcc3ed6419106f7d08fc639e7023d9650fe"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"0813e574539f19d751a0a16e545d2bd9fec25558","unresolved":true,"context_lines":[{"line_number":617,"context_line":"                    {\u0027device_raw\u0027: device_raw})"},{"line_number":618,"context_line":"            elif (devtype \u003d\u003d \u0027md\u0027"},{"line_number":619,"context_line":"                  and (block_type \u003d\u003d \u0027part\u0027"},{"line_number":620,"context_line":"                       or block_type \u003d\u003d \u0027lvm\u0027)):"},{"line_number":621,"context_line":"                # NOTE(dszumski): Partitions and LVM volumes on software RAID"},{"line_number":622,"context_line":"                # devices have type \u0027md\u0027. This may also contain RAID devices in"},{"line_number":623,"context_line":"                # a broken state in rare occasions. See"}],"source_content_type":"text/x-python","patch_set":13,"id":"0c17c4f7_9d89b614","line":620,"range":{"start_line":620,"start_character":22,"end_line":620,"end_character":48},"in_reply_to":"4245b603_714873d7","updated":"2024-07-08 11:14:46.000000000","message":"some remarks to it:\n - we\u0027re not doing any list_all_block_devices(block_type\u003d\u0027lvm\u0027 in the code at this point\n - lvm volumes on software raid or on whole lvm PV are still type lvm (cpt. obvious type remark, sorry)\n - lsblk adds md type only when it can\u0027t find a proper md level in /sysfs, so on broken/not created MDs - https://github.com/util-linux/util-linux/blob/12f5423fc2ed08e1945fac95f3bdeb39bb915ea7/misc-utils/lsblk.c#L432-L436\n\ntherefore I don\u0027t think block_type \u003d\u003d \u0027lvm\u0027 is needed. I think we can leave it as before just to md.","commit_id":"30ae9fcc3ed6419106f7d08fc639e7023d9650fe"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60bcf0d8447edc9f890482cbdee77caf832011d1","unresolved":true,"context_lines":[{"line_number":435,"context_line":"        LOG.debug(\u0027Restarting software RAID device %s\u0027, raid_device)"},{"line_number":436,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":437,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":438,"context_line":"        dmsetup_stdout, _ \u003d il_utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":439,"context_line":"                                             use_standard_locale\u003dTrue)"},{"line_number":440,"context_line":"        if \u0027No devices found\u0027 not in dmsetup_stdout:"},{"line_number":441,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1435e48f_c602b104","line":438,"updated":"2026-02-02 14:19:17.000000000","message":"Do we expect device-mapper to be always present? Given that people tend to minimize their images, I\u0027d prefer to handle FileNotFound here.","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"733abceaf68e85f75b9c64fde97fa4f586f99ea1","unresolved":true,"context_lines":[{"line_number":434,"context_line":"    try:"},{"line_number":435,"context_line":"        LOG.debug(\u0027Restarting software RAID device %s\u0027, raid_device)"},{"line_number":436,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":437,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":438,"context_line":"        dmsetup_stdout, _ \u003d il_utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":439,"context_line":"                                             use_standard_locale\u003dTrue)"},{"line_number":440,"context_line":"        if \u0027No devices found\u0027 not in dmsetup_stdout:"},{"line_number":441,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":442,"context_line":"            il_utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":443,"context_line":"        component_devices \u003d get_component_devices(raid_device)"},{"line_number":444,"context_line":"        il_utils.execute(\u0027mdadm\u0027, \u0027--stop\u0027, raid_device)"},{"line_number":445,"context_line":"        il_utils.execute(\u0027mdadm\u0027, \u0027--assemble\u0027, raid_device,"}],"source_content_type":"text/x-python","patch_set":19,"id":"b12254a7_37af106f","line":442,"range":{"start_line":437,"start_character":58,"end_line":442,"end_character":53},"updated":"2025-12-15 21:49:11.000000000","message":"I really wish this was somehow captured in a test, but it is what it is.","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60bcf0d8447edc9f890482cbdee77caf832011d1","unresolved":true,"context_lines":[{"line_number":434,"context_line":"    try:"},{"line_number":435,"context_line":"        LOG.debug(\u0027Restarting software RAID device %s\u0027, raid_device)"},{"line_number":436,"context_line":"        # NOTE(mnasiadka): If the image is LVM based we need to clean"},{"line_number":437,"context_line":"        # dmsetup devices, because mdadm --stop will fail."},{"line_number":438,"context_line":"        dmsetup_stdout, _ \u003d il_utils.execute(\u0027dmsetup\u0027, \u0027table\u0027,"},{"line_number":439,"context_line":"                                             use_standard_locale\u003dTrue)"},{"line_number":440,"context_line":"        if \u0027No devices found\u0027 not in dmsetup_stdout:"},{"line_number":441,"context_line":"            LOG.debug(\u0027Deactivating LVM\u0027)"},{"line_number":442,"context_line":"            il_utils.execute(\u0027dmsetup\u0027, \u0027remove_all\u0027)"},{"line_number":443,"context_line":"        component_devices \u003d get_component_devices(raid_device)"},{"line_number":444,"context_line":"        il_utils.execute(\u0027mdadm\u0027, \u0027--stop\u0027, raid_device)"},{"line_number":445,"context_line":"        il_utils.execute(\u0027mdadm\u0027, \u0027--assemble\u0027, raid_device,"}],"source_content_type":"text/x-python","patch_set":19,"id":"78efcdae_8db3c7c4","line":442,"range":{"start_line":437,"start_character":58,"end_line":442,"end_character":53},"in_reply_to":"b12254a7_37af106f","updated":"2026-02-02 14:19:17.000000000","message":"We should definitely add a test","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"072bf1aea439f60dd9a97ae987394b52f301296f","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        report_json \u003d json.loads(report)"},{"line_number":564,"context_line":"    except json.decoder.JSONDecodeError as ex:"},{"line_number":565,"context_line":"        LOG.error(\"Unable to decode lsblk output, invalid JSON: %s\", ex)"},{"line_number":566,"context_line":"        raise"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    context \u003d pyudev.Context()"},{"line_number":569,"context_line":"    devices_raw \u003d report_json[\u0027blockdevices\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"8cf890e2_8d0fa311","line":566,"updated":"2025-12-06 17:41:05.000000000","message":"This seems unrelated, maybe propose it separately?","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"733abceaf68e85f75b9c64fde97fa4f586f99ea1","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        report_json \u003d json.loads(report)"},{"line_number":564,"context_line":"    except json.decoder.JSONDecodeError as ex:"},{"line_number":565,"context_line":"        LOG.error(\"Unable to decode lsblk output, invalid JSON: %s\", ex)"},{"line_number":566,"context_line":"        raise"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    context \u003d pyudev.Context()"},{"line_number":569,"context_line":"    devices_raw \u003d report_json[\u0027blockdevices\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"c1c928bb_9cd89b87","line":566,"in_reply_to":"8cf890e2_8d0fa311","updated":"2025-12-15 21:49:11.000000000","message":"Might make sense, but I\u0027m good with this change.","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60bcf0d8447edc9f890482cbdee77caf832011d1","unresolved":true,"context_lines":[{"line_number":563,"context_line":"        report_json \u003d json.loads(report)"},{"line_number":564,"context_line":"    except json.decoder.JSONDecodeError as ex:"},{"line_number":565,"context_line":"        LOG.error(\"Unable to decode lsblk output, invalid JSON: %s\", ex)"},{"line_number":566,"context_line":"        raise"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    context \u003d pyudev.Context()"},{"line_number":569,"context_line":"    devices_raw \u003d report_json[\u0027blockdevices\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"615f8f0d_2fc4433d","line":566,"in_reply_to":"c1c928bb_9cd89b87","updated":"2026-02-02 14:19:17.000000000","message":"But we may want to backport it separately from the main change (especially since the main change is a feature).","commit_id":"414941521799800c83c2e878c78dbe732a3613f7"}]}
