)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5af440dd_76beb4e5","updated":"2022-01-26 07:58:22.000000000","message":"Thanks for the review, Dmitry!","commit_id":"9796ba89e5fdcadb62fd3d8cc81a19f205a8a8ac"}],"ironic_python_agent/efi_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from oslo_log import log"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ironic_python_agent import errors"},{"line_number":23,"context_line":"from ironic_python_agent.extensions import image"},{"line_number":24,"context_line":"from ironic_python_agent import hardware"},{"line_number":25,"context_line":"from ironic_python_agent import partition_utils"},{"line_number":26,"context_line":"from ironic_python_agent import utils"}],"source_content_type":"text/x-python","patch_set":3,"id":"eb0553ac_5092ca2b","line":23,"updated":"2022-01-25 10:55:00.000000000","message":"We shouldn\u0027t import code from extensions in the generic modules. I think it\u0027s a sign that something should be moved here.","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from oslo_log import log"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ironic_python_agent import errors"},{"line_number":23,"context_line":"from ironic_python_agent.extensions import image"},{"line_number":24,"context_line":"from ironic_python_agent import hardware"},{"line_number":25,"context_line":"from ironic_python_agent import partition_utils"},{"line_number":26,"context_line":"from ironic_python_agent import utils"}],"source_content_type":"text/x-python","patch_set":3,"id":"33bf8e25_6a9dce21","line":23,"in_reply_to":"eb0553ac_5092ca2b","updated":"2022-01-26 07:58:22.000000000","message":"see below","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            efi_mounted \u003d False"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            holders \u003d hardware.get_holder_disks(device)"},{"line_number":115,"context_line":"            efi_md_device \u003d image.prepare_boot_partitions_for_softraid("},{"line_number":116,"context_line":"                device, holders, efi_device_part, target_boot_mode\u003d\u0027uefi\u0027"},{"line_number":117,"context_line":"            )"},{"line_number":118,"context_line":"            efi_devices \u003d hardware.get_component_devices(efi_md_device)"}],"source_content_type":"text/x-python","patch_set":3,"id":"8c3026c8_c135c272","line":115,"updated":"2022-01-25 10:55:00.000000000","message":".. move to raid_utils or here?","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            efi_mounted \u003d False"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            holders \u003d hardware.get_holder_disks(device)"},{"line_number":115,"context_line":"            efi_md_device \u003d image.prepare_boot_partitions_for_softraid("},{"line_number":116,"context_line":"                device, holders, efi_device_part, target_boot_mode\u003d\u0027uefi\u0027"},{"line_number":117,"context_line":"            )"},{"line_number":118,"context_line":"            efi_devices \u003d hardware.get_component_devices(efi_md_device)"}],"source_content_type":"text/x-python","patch_set":3,"id":"6ce295af_6c864581","line":115,"in_reply_to":"8c3026c8_c135c272","updated":"2022-01-26 07:58:22.000000000","message":"raid_utils may be better since it also does bios boot partitions,\nbut, yeah, totally agree this should be moved (in a followup/as a refactor patch)","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    efi_partition_numbers.append(partition_number)"},{"line_number":126,"context_line":"                else:"},{"line_number":127,"context_line":"                    raise errors.DeviceNotFound("},{"line_number":128,"context_line":"                        \"Could not extract the \" \"partition number \""},{"line_number":129,"context_line":"                        \"from %s!\" % dev)"},{"line_number":130,"context_line":"            efi_label_add \u003d \u0027(RAID, part\u0027"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"cc7a15f4_ec63ba74","line":128,"updated":"2022-01-25 10:55:00.000000000","message":"nit: \"  \"?","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    efi_partition_numbers.append(partition_number)"},{"line_number":126,"context_line":"                else:"},{"line_number":127,"context_line":"                    raise errors.DeviceNotFound("},{"line_number":128,"context_line":"                        \"Could not extract the \" \"partition number \""},{"line_number":129,"context_line":"                        \"from %s!\" % dev)"},{"line_number":130,"context_line":"            efi_label_add \u003d \u0027(RAID, part\u0027"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"8f88642b_2462c4e3","line":128,"in_reply_to":"cc7a15f4_ec63ba74","updated":"2022-01-26 07:58:22.000000000","message":"thanks!","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        for i, (efi_dev, efi_part) in enumerate(efi_dev_part):"},{"line_number":138,"context_line":"            LOG.info(\"Calling efibootmgr with dev %s part %s\","},{"line_number":139,"context_line":"                     efi_dev, efi_part)"},{"line_number":140,"context_line":"            if efi_label_add:"},{"line_number":141,"context_line":"                # NOTE (arne_wiebalck): uniqify the labels to prevent"},{"line_number":142,"context_line":"                # unintentional boot entry cleanup"},{"line_number":143,"context_line":"                _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,"}],"source_content_type":"text/x-python","patch_set":3,"id":"cbaa022b_6e7a4f1c","line":140,"updated":"2022-01-25 10:55:00.000000000","message":"nit: you could use\n\n len(efi_dev_part) \u003e 1","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        for i, (efi_dev, efi_part) in enumerate(efi_dev_part):"},{"line_number":138,"context_line":"            LOG.info(\"Calling efibootmgr with dev %s part %s\","},{"line_number":139,"context_line":"                     efi_dev, efi_part)"},{"line_number":140,"context_line":"            if efi_label_add:"},{"line_number":141,"context_line":"                # NOTE (arne_wiebalck): uniqify the labels to prevent"},{"line_number":142,"context_line":"                # unintentional boot entry cleanup"},{"line_number":143,"context_line":"                _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ac0eb160_62b70f08","line":140,"in_reply_to":"cbaa022b_6e7a4f1c","updated":"2022-01-26 07:58:22.000000000","message":"done","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                # unintentional boot entry cleanup"},{"line_number":143,"context_line":"                _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,"},{"line_number":144,"context_line":"                                efi_partition_mount_point,"},{"line_number":145,"context_line":"                                efi_label_add + str(i) + \u0027)\u0027)"},{"line_number":146,"context_line":"            else:"},{"line_number":147,"context_line":"                _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,"},{"line_number":148,"context_line":"                                efi_partition_mount_point)"}],"source_content_type":"text/x-python","patch_set":3,"id":"a5b1f2bb_8f17d62e","line":145,"updated":"2022-01-25 10:55:00.000000000","message":"nit: better use formatting\n\n efi_label_add % i\n\n(with appropriate changes to efi_label_add)","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                # unintentional boot entry cleanup"},{"line_number":143,"context_line":"                _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,"},{"line_number":144,"context_line":"                                efi_partition_mount_point,"},{"line_number":145,"context_line":"                                efi_label_add + str(i) + \u0027)\u0027)"},{"line_number":146,"context_line":"            else:"},{"line_number":147,"context_line":"                _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,"},{"line_number":148,"context_line":"                                efi_partition_mount_point)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3c991737_32d53df9","line":145,"in_reply_to":"a5b1f2bb_8f17d62e","updated":"2022-01-26 07:58:22.000000000","message":"done","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"def _run_efibootmgr(valid_efi_bootloaders, device, efi_partition,"},{"line_number":276,"context_line":"                    mount_point, label_add\u003dNone):"},{"line_number":277,"context_line":"    \"\"\"Executes efibootmgr and removes duplicate entries."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    :param valid_efi_bootloaders: the list of valid efi bootloaders"}],"source_content_type":"text/x-python","patch_set":3,"id":"dcaf2b84_c02986dc","line":276,"updated":"2022-01-25 10:55:00.000000000","message":"nit: label_suffix?","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"def _run_efibootmgr(valid_efi_bootloaders, device, efi_partition,"},{"line_number":276,"context_line":"                    mount_point, label_add\u003dNone):"},{"line_number":277,"context_line":"    \"\"\"Executes efibootmgr and removes duplicate entries."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    :param valid_efi_bootloaders: the list of valid efi bootloaders"}],"source_content_type":"text/x-python","patch_set":3,"id":"218978b5_ca5bdd8d","line":276,"in_reply_to":"dcaf2b84_c02986dc","updated":"2022-01-26 07:58:22.000000000","message":"done","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                LOG.debug(\"Found bootnum %s matching label\", boot_num)"},{"line_number":319,"context_line":"                remove_boot_record(boot_num)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        LOG.info(\"Adding loader %(path)s on partition %(part)s of device \""},{"line_number":322,"context_line":"                 \" %(dev)s with label %(label)s\","},{"line_number":323,"context_line":"                 {\u0027path\u0027: v_efi_bl_path, \u0027part\u0027: efi_partition,"},{"line_number":324,"context_line":"                  \u0027dev\u0027: device, \u0027label\u0027: label})"}],"source_content_type":"text/x-python","patch_set":3,"id":"a6ea98d8_1a2567c4","line":321,"updated":"2022-01-25 10:55:00.000000000","message":"There is another info on line 138, maybe make one of them debug?","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                LOG.debug(\"Found bootnum %s matching label\", boot_num)"},{"line_number":319,"context_line":"                remove_boot_record(boot_num)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        LOG.info(\"Adding loader %(path)s on partition %(part)s of device \""},{"line_number":322,"context_line":"                 \" %(dev)s with label %(label)s\","},{"line_number":323,"context_line":"                 {\u0027path\u0027: v_efi_bl_path, \u0027part\u0027: efi_partition,"},{"line_number":324,"context_line":"                  \u0027dev\u0027: device, \u0027label\u0027: label})"}],"source_content_type":"text/x-python","patch_set":3,"id":"efc31d94_7ac2a09e","line":321,"in_reply_to":"a6ea98d8_1a2567c4","updated":"2022-01-26 07:58:22.000000000","message":"done","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"}],"releasenotes/notes/move_swraid_to_efibootmgr-d87c1bfde1661fb5.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cec73151c584f909458222231821b699181c24bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Use efibootmgr instead of grub2-install for software RAID. This"},{"line_number":5,"context_line":"    allows to install images with newer versions of grub2-install"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7c492152_483ed6ab","line":2,"updated":"2022-01-25 10:55:00.000000000","message":"Is it really a feature? Sounds like you\u0027re fixing something that does not work now, although it should.","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f11bceb7910e5ad6c760e65fce3ca8cb181f6eb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Use efibootmgr instead of grub2-install for software RAID. This"},{"line_number":5,"context_line":"    allows to install images with newer versions of grub2-install"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e62fb5ef_27676090","line":2,"in_reply_to":"7c492152_483ed6ab","updated":"2022-01-26 07:58:22.000000000","message":"yeah, was unsure ... changed to \u0027fixes\u0027 now","commit_id":"7af9c40609d916d995ef87154f2cee9f1e8b2dde"}]}
