)]}'
{"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":"f64b161d8195e968e8510cc860c162bc52928289","unresolved":true,"context_lines":[{"line_number":629,"context_line":"            utils.execute(\u0027mount\u0027, efi_partition, efi_partition_mount_point)"},{"line_number":630,"context_line":"            efi_mounted \u003d True"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"            bootloaders \u003d _get_efi_bootloaders(efi_partition_mount_point)"},{"line_number":633,"context_line":"            if bootloaders:"},{"line_number":634,"context_line":"                LOG.warning(\"Existing EFI bootloaders have been detected \""},{"line_number":635,"context_line":"                            \"so GRUB2 will not be installed to preserve \""}],"source_content_type":"text/x-python","patch_set":1,"id":"beb03068_e0ed7538","line":632,"updated":"2021-05-26 13:53:17.000000000","message":"Just an off the cuff idea, maybe we globally set a variable instead of calling another method? Just thinking since this is a syncrhonous call where operator types *have* reported sometimeouts before because of all of the io-ops and steps, maybe less calls is best.","commit_id":"ac938aba2a2d0d781291e46ae807320007c72262"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f64b161d8195e968e8510cc860c162bc52928289","unresolved":true,"context_lines":[{"line_number":641,"context_line":"                            \"does not place Secure Boot signed binaries.\","},{"line_number":642,"context_line":"                            efi_partition)"},{"line_number":643,"context_line":"                # FIXME(rg): does not work in cross boot mode case (target"},{"line_number":644,"context_line":"                # boot mode differs from ramdisk one)"},{"line_number":645,"context_line":"                # Probe for the correct target (depends on the arch, example"},{"line_number":646,"context_line":"                # --target\u003dx86_64-efi)"},{"line_number":647,"context_line":"                utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":648,"context_line":"                              \u0027\"%(bin)s-install\"\u0027 %"},{"line_number":649,"context_line":"                              {\u0027path\u0027: path, \u0027bin\u0027: binary_name},"},{"line_number":650,"context_line":"                              shell\u003dTrue,"},{"line_number":651,"context_line":"                              env_variables\u003d{"},{"line_number":652,"context_line":"                                  \u0027PATH\u0027: path_variable"},{"line_number":653,"context_line":"                              })"},{"line_number":654,"context_line":"                # Also run grub-install with --removable, this installs grub to"},{"line_number":655,"context_line":"                # the EFI fallback path. Useful if the NVRAM wasn\u0027t written"},{"line_number":656,"context_line":"                # correctly, was reset or if testing with virt as libvirt"},{"line_number":657,"context_line":"                # resets the NVRAM on instance start."},{"line_number":658,"context_line":"                # This operation is essentially a copy operation. Use of the"},{"line_number":659,"context_line":"                # --removable flag, per the grub-install source code changes"},{"line_number":660,"context_line":"                # the default file to be copied, destination file name, and"},{"line_number":661,"context_line":"                # prevents NVRAM from being updated."},{"line_number":662,"context_line":"                # We only run grub2_install for uefi if we can\u0027t verify the"},{"line_number":663,"context_line":"                # uefi bits"},{"line_number":664,"context_line":"                utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":665,"context_line":"                              \u0027\"%(bin)s-install --removable\"\u0027 %"},{"line_number":666,"context_line":"                              {\u0027path\u0027: path, \u0027bin\u0027: binary_name},"},{"line_number":667,"context_line":"                              shell\u003dTrue,"},{"line_number":668,"context_line":"                              env_variables\u003d{"},{"line_number":669,"context_line":"                                  \u0027PATH\u0027: path_variable"},{"line_number":670,"context_line":"                              })"},{"line_number":671,"context_line":"            utils.execute(\u0027umount\u0027, efi_partition_mount_point, attempts\u003d3,"},{"line_number":672,"context_line":"                          delay_on_retry\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e5fc2e55_388acef2","line":669,"range":{"start_line":644,"start_character":1,"end_line":669,"end_character":49},"updated":"2021-05-26 13:53:17.000000000","message":"do we *want* to explicitly return a more friendly error message all the way back? Seems like it would be helpful for operators to know what is going on.","commit_id":"ac938aba2a2d0d781291e46ae807320007c72262"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"a2bb5165929fb2bf7d1fb4c01711551a07aba85d","unresolved":true,"context_lines":[{"line_number":797,"context_line":"    efi_dir \u003d os.path.join(path, \u0027boot/efi\u0027)"},{"line_number":798,"context_line":"    grub2_file \u003d os.path.join(path, \u0027boot\u0027, binary_name, \u0027grub.cfg\u0027)"},{"line_number":799,"context_line":"    for root, dirs, files in os.walk(efi_dir):"},{"line_number":800,"context_line":"        if \u0027grub.cfg\u0027 not in files:"},{"line_number":801,"context_line":"            continue"},{"line_number":802,"context_line":"        grub_dest \u003d os.path.join(root, \u0027grub.cfg\u0027)"},{"line_number":803,"context_line":"        LOG.debug(\u0027Replacing existing %s with %s\u0027, (grub_dest, grub2_file))"}],"source_content_type":"text/x-python","patch_set":1,"id":"2df70be2_aaf568c7","line":800,"updated":"2021-05-26 02:34:53.000000000","message":"I don\u0027t think we can rely on a grub.cfg being in the same directory as the signed grub binary, based on what I\u0027m seeing building a centos-stream overcloud-full which invokes the grub2 element.\n\nI think instead, copy grub.cfg to any directory which has *.efi files in it, except BOOT","commit_id":"ac938aba2a2d0d781291e46ae807320007c72262"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f64b161d8195e968e8510cc860c162bc52928289","unresolved":true,"context_lines":[{"line_number":797,"context_line":"    efi_dir \u003d os.path.join(path, \u0027boot/efi\u0027)"},{"line_number":798,"context_line":"    grub2_file \u003d os.path.join(path, \u0027boot\u0027, binary_name, \u0027grub.cfg\u0027)"},{"line_number":799,"context_line":"    for root, dirs, files in os.walk(efi_dir):"},{"line_number":800,"context_line":"        if \u0027grub.cfg\u0027 not in files:"},{"line_number":801,"context_line":"            continue"},{"line_number":802,"context_line":"        grub_dest \u003d os.path.join(root, \u0027grub.cfg\u0027)"},{"line_number":803,"context_line":"        LOG.debug(\u0027Replacing existing %s with %s\u0027, (grub_dest, grub2_file))"}],"source_content_type":"text/x-python","patch_set":1,"id":"39d81288_a7d9faad","line":800,"in_reply_to":"2df70be2_aaf568c7","updated":"2021-05-26 13:53:17.000000000","message":"so attempt to run grub-mkconfig from with-in the chroot, but don\u0027t raise an exception if it errors... because not all bootloaders are grub2?","commit_id":"ac938aba2a2d0d781291e46ae807320007c72262"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"c3b0c888513944017f22d47cb5e4832ab185a0aa","unresolved":true,"context_lines":[{"line_number":806,"context_line":"        except (IOError, OSError, shutil.SameFileError) as e:"},{"line_number":807,"context_line":"            LOG.warning(\u0027Failed to copy grub.cfg file for \u0027"},{"line_number":808,"context_line":"                        \u0027EFI boot operation. Error %s\u0027, e)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"    LOG.debug(\u0027Completed basic grub configuration.\u0027)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8fc9ce9c_73630fcb","line":809,"updated":"2021-05-26 05:43:11.000000000","message":"Actually I think this is just doing what _preserve_efi_assets does, so lets call that instead","commit_id":"ac938aba2a2d0d781291e46ae807320007c72262"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f64b161d8195e968e8510cc860c162bc52928289","unresolved":true,"context_lines":[{"line_number":806,"context_line":"        except (IOError, OSError, shutil.SameFileError) as e:"},{"line_number":807,"context_line":"            LOG.warning(\u0027Failed to copy grub.cfg file for \u0027"},{"line_number":808,"context_line":"                        \u0027EFI boot operation. Error %s\u0027, e)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"    LOG.debug(\u0027Completed basic grub configuration.\u0027)"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a988ea5e_00e2506b","line":809,"in_reply_to":"8fc9ce9c_73630fcb","updated":"2021-05-26 13:53:17.000000000","message":"basically... yes. Granted, Partition images sometimes lack the entire EFI folder structure, so we likely need to account for that... separately. *sigh*","commit_id":"ac938aba2a2d0d781291e46ae807320007c72262"}]}
