)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c9046a1cffa784be5698ebc7aa672dcd2206f8fd","unresolved":false,"context_lines":[{"line_number":10,"context_line":" - efi partition and ppc prep boot partition do not have to lie on the"},{"line_number":11,"context_line":"   same device as the rootfs (and sometimes it\u0027s even a requirement,"},{"line_number":12,"context_line":"   for example, with uefi, if the rootfs is on a software raid,"},{"line_number":13,"context_line":"   the efi partition needs to be on the disk holder, and cannot be"},{"line_number":14,"context_line":"   on the raid itself"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Fixes:"},{"line_number":17,"context_line":" - get raid array disk holders, with nvme drives."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_ac5da716","line":14,"range":{"start_line":13,"start_character":57,"end_line":14,"end_character":21},"updated":"2019-08-07 07:37:56.000000000","message":"But if the root device is on RAID-1 (and we require that explicitly), won\u0027t it just work?","commit_id":"64f78bb316d4ec8e9e67edb59596b15a21ec325f"}],"ironic_python_agent/extensions/image.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b0570652f4f25c47ca6b2d7d127d920cf01905e9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                  {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        # Try to tell the kernel to re-read the partition table"},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            if not device:"},{"line_number":53,"context_line":"                block_devs \u003d hardware.dispatch_to_managers("}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_445658d0","line":50,"updated":"2019-08-21 18:55:13.000000000","message":"Do we really need to with https://review.opendev.org/#/c/677764/ ?   Or is this to cover partitioning out of ironic-lib?  I\u0027m guessing the latter, but wanted to check.","commit_id":"955af59aceb3b9ac5c87a849ffc4649bab9d889f"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"977b992f0ea52504850370f091727e00b2b12dfb","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                  {\u0027dev\u0027: device, \u0027uuid\u0027: uuid})"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        # Try to tell the kernel to re-read the partition table"},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            if not device:"},{"line_number":53,"context_line":"                block_devs \u003d hardware.dispatch_to_managers("}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_ed47c01d","line":50,"in_reply_to":"7faddb67_445658d0","updated":"2019-08-28 08:36:00.000000000","message":"I must admit I did not question refreshing the part table here, but my guess is it can\u0027t hurt. And indeed, it\u0027s still relevant to do it in the second case.\nNow that you mention https://review.opendev.org/#/c/677764/1/ironic_lib/disk_utils.py, would be great to reuse _trigger_device_rescan here as well (adding a TODO note, because we need to create a pull request on ironic lib first to rename the method). First I have a question, which I posted directly on the review itself, even if already merged :)","commit_id":"955af59aceb3b9ac5c87a849ffc4649bab9d889f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b0570652f4f25c47ca6b2d7d127d920cf01905e9","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        # Try to tell the kernel to re-read the partition table"},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            if not device:"},{"line_number":53,"context_line":"                block_devs \u003d hardware.dispatch_to_managers("},{"line_number":54,"context_line":"                    \u0027list_block_devices\u0027, False)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_c469e88b","line":51,"updated":"2019-08-21 18:55:13.000000000","message":"fyi, you need to issue a sync call first as ramfs is evil and most tools use fsync to try and tell the device blocks to sync out to disk... #hadtogodigthroughkernelcode","commit_id":"955af59aceb3b9ac5c87a849ffc4649bab9d889f"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"977b992f0ea52504850370f091727e00b2b12dfb","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        # Try to tell the kernel to re-read the partition table"},{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            if not device:"},{"line_number":53,"context_line":"                block_devs \u003d hardware.dispatch_to_managers("},{"line_number":54,"context_line":"                    \u0027list_block_devices\u0027, False)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_e83d6ebc","line":51,"in_reply_to":"7faddb67_c469e88b","updated":"2019-08-28 08:36:00.000000000","message":"Done","commit_id":"955af59aceb3b9ac5c87a849ffc4649bab9d889f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b0570652f4f25c47ca6b2d7d127d920cf01905e9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \u0027list_block_devices\u0027, False)"},{"line_number":55,"context_line":"                for dev in block_devs:"},{"line_number":56,"context_line":"                    utils.execute(\u0027partx\u0027, \u0027-u\u0027, dev.name,"},{"line_number":57,"context_line":"                                  check_exit_code\u003dFalse)"},{"line_number":58,"context_line":"            else:"},{"line_number":59,"context_line":"                utils.execute(\u0027partx\u0027, \u0027-u\u0027, device, attempts\u003d3,"},{"line_number":60,"context_line":"                              delay_on_retry\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_440bb8d3","line":57,"updated":"2019-08-21 18:55:13.000000000","message":"Maybe Dmitry remembers, but we previously used partx and found that it didn\u0027t always work. I\u0027ll add dmitry to this review to see if he remembers.","commit_id":"955af59aceb3b9ac5c87a849ffc4649bab9d889f"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"977b992f0ea52504850370f091727e00b2b12dfb","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                    \u0027list_block_devices\u0027, False)"},{"line_number":55,"context_line":"                for dev in block_devs:"},{"line_number":56,"context_line":"                    utils.execute(\u0027partx\u0027, \u0027-u\u0027, dev.name,"},{"line_number":57,"context_line":"                                  check_exit_code\u003dFalse)"},{"line_number":58,"context_line":"            else:"},{"line_number":59,"context_line":"                utils.execute(\u0027partx\u0027, \u0027-u\u0027, device, attempts\u003d3,"},{"line_number":60,"context_line":"                              delay_on_retry\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_0839eacd","line":57,"in_reply_to":"7faddb67_440bb8d3","updated":"2019-08-28 08:36:00.000000000","message":"Done","commit_id":"955af59aceb3b9ac5c87a849ffc4649bab9d889f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"77134baf3816179f16257fb55afa4c426ac9d826","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                \"correctly for device %s\", dev)"},{"line_number":69,"context_line":"            utils.execute(\u0027udevadm\u0027, \u0027settle\u0027)"},{"line_number":70,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":71,"context_line":"            LOG.warning(\"Couldn\u0027t refresh the partition tables\")"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        cmd \u003d [\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,PARTUUID,TYPE\u0027]"},{"line_number":74,"context_line":"        if device:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5e0d8e3c","line":71,"updated":"2019-09-18 15:44:00.000000000","message":"wonder if it might be useful to log the devices (block_devs) too.","commit_id":"ef7fefbea79fcdb692402a382c0e21017411ea50"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"985ac08c37a5929e87462833e5238a88d23ab866","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                \"correctly for device %s\", dev)"},{"line_number":69,"context_line":"            utils.execute(\u0027udevadm\u0027, \u0027settle\u0027)"},{"line_number":70,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":71,"context_line":"            LOG.warning(\"Couldn\u0027t refresh the partition tables\")"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        cmd \u003d [\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,PARTUUID,TYPE\u0027]"},{"line_number":74,"context_line":"        if device:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_300a2fd2","line":71,"in_reply_to":"3fa7e38b_5e0d8e3c","updated":"2019-09-19 09:49:57.000000000","message":"Done","commit_id":"ef7fefbea79fcdb692402a382c0e21017411ea50"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"77134baf3816179f16257fb55afa4c426ac9d826","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                   prep_boot_part_uuid\u003dNone):"},{"line_number":114,"context_line":"    \"\"\"Install GRUB2 bootloader on a given device.\"\"\""},{"line_number":115,"context_line":"    LOG.debug(\"Installing GRUB2 bootloader on device %s\", device)"},{"line_number":116,"context_line":"    root_partition \u003d _get_partition(device\u003ddevice, uuid\u003droot_uuid)"},{"line_number":117,"context_line":"    efi_partition \u003d None"},{"line_number":118,"context_line":"    efi_partition_mount_point \u003d None"},{"line_number":119,"context_line":"    efi_mounted \u003d False"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_f97a5486","line":116,"updated":"2019-09-18 15:44:00.000000000","message":"I\u0027m not sure why the original code had uuid\u003droot_uuid, when the method was _get_partition(device, uuid). This works, but we should just do _get_partition(root_uuid, device\u003ddevice).","commit_id":"ef7fefbea79fcdb692402a382c0e21017411ea50"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"985ac08c37a5929e87462833e5238a88d23ab866","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                   prep_boot_part_uuid\u003dNone):"},{"line_number":114,"context_line":"    \"\"\"Install GRUB2 bootloader on a given device.\"\"\""},{"line_number":115,"context_line":"    LOG.debug(\"Installing GRUB2 bootloader on device %s\", device)"},{"line_number":116,"context_line":"    root_partition \u003d _get_partition(device\u003ddevice, uuid\u003droot_uuid)"},{"line_number":117,"context_line":"    efi_partition \u003d None"},{"line_number":118,"context_line":"    efi_partition_mount_point \u003d None"},{"line_number":119,"context_line":"    efi_mounted \u003d False"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_f013370c","line":116,"in_reply_to":"3fa7e38b_f97a5486","updated":"2019-09-19 09:49:57.000000000","message":"Done","commit_id":"ef7fefbea79fcdb692402a382c0e21017411ea50"}]}
