)]}'
{"bindep.txt":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7577f09fa6b9be9eedc640183a2bb00da62686e1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"unzip [imagebuild]"},{"line_number":27,"context_line":"sudo [imagebuild]"},{"line_number":28,"context_line":"gawk [imagebuild]"},{"line_number":29,"context_line":"file [imagebuild]"}],"source_content_type":"text/plain","patch_set":12,"id":"3fa7e38b_7da53402","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":17},"updated":"2019-10-16 09:30:26.000000000","message":"I doubt it\u0027s needed here, it\u0027s used inside the ramdisk, not on the host machine when building it.","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"96788c874ba5ca339d8917ab4fc75f783e923c70","unresolved":false,"context_lines":[{"line_number":26,"context_line":"unzip [imagebuild]"},{"line_number":27,"context_line":"sudo [imagebuild]"},{"line_number":28,"context_line":"gawk [imagebuild]"},{"line_number":29,"context_line":"file [imagebuild]"}],"source_content_type":"text/plain","patch_set":12,"id":"3fa7e38b_e15c014e","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":17},"in_reply_to":"3fa7e38b_7da53402","updated":"2019-10-30 13:10:24.000000000","message":"Indeed, so dib based should enumerate through this.","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"}],"ironic_python_agent/extensions/image.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e688eeceb70d9a8ac86dfdf59161da10dc9bfbf5","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        LOG.error(error_msg)"},{"line_number":212,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    finally:"},{"line_number":215,"context_line":"        umount_warn_msg \u003d \"Unable to umount %(path)s. Error: %(error)s\""},{"line_number":216,"context_line":"        # Umount binds and partition"},{"line_number":217,"context_line":"        umount_binds_fail \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3dbac00a","line":214,"updated":"2019-08-30 08:28:23.000000000","message":"The whole finally block is executed on return and fails the metalsmith job with local variable \u0027path\u0027 referenced before assignment.\n\nAnd since this code path is hit at all, I suspect this patch may not be right.","commit_id":"bf59fb35822d856dea042af2751ae172461ffab5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"129db459a059f0a38167baa5f704519569451a80","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        LOG.error(error_msg)"},{"line_number":212,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    finally:"},{"line_number":215,"context_line":"        umount_warn_msg \u003d \"Unable to umount %(path)s. Error: %(error)s\""},{"line_number":216,"context_line":"        # Umount binds and partition"},{"line_number":217,"context_line":"        umount_binds_fail \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_b1901750","line":214,"in_reply_to":"7faddb67_3dbac00a","updated":"2019-08-30 12:48:59.000000000","message":"finally is always hit, I shouldn\u0027t have put it in the try block. Doh!","commit_id":"bf59fb35822d856dea042af2751ae172461ffab5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6a04d09e3e1f829d34f6a1cefb9b69f4b3896e02","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _has_boot_sector(device):"},{"line_number":104,"context_line":"        stdout, stderr \u003d utils.execute(\u0027file\u0027, \u0027-s\u0027, device)"},{"line_number":105,"context_line":"        if \u0027boot sector\u0027 in stdout:"},{"line_number":106,"context_line":"            return True"},{"line_number":107,"context_line":"        return False"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    try:"},{"line_number":110,"context_line":"        stdout, stderr \u003d utils.execute(\u0027parted\u0027, dev, \u0027-s\u0027, \u0027-m\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_67d2ddff","line":107,"range":{"start_line":105,"start_character":0,"end_line":107,"end_character":20},"updated":"2019-08-30 14:24:26.000000000","message":"nit:\n\n return \u0027boot sector\u0027 in stdout","commit_id":"bcb57917b8e8791811a2ff026747b8efac959d3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6a04d09e3e1f829d34f6a1cefb9b69f4b3896e02","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    lines \u003d stdout.splitlines()"},{"line_number":115,"context_line":"    for line in lines:"},{"line_number":116,"context_line":"        partition \u003d line.split(\u0027:\u0027)"},{"line_number":117,"context_line":"        if len(partition) \u003e\u003d 7:"},{"line_number":118,"context_line":"            if \u0027boot\u0027 in partition[6]:"},{"line_number":119,"context_line":"                if (_has_boot_sector(dev)"},{"line_number":120,"context_line":"                    or _has_boot_sector(partition[0])):"},{"line_number":121,"context_line":"                    return True"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a73a1531","line":118,"range":{"start_line":117,"start_character":0,"end_line":118,"end_character":38},"updated":"2019-08-30 14:24:26.000000000","message":"nit: merge into one \u0027if\u0027","commit_id":"bcb57917b8e8791811a2ff026747b8efac959d3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6a04d09e3e1f829d34f6a1cefb9b69f4b3896e02","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    efi_mounted \u003d False"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    if (_is_bootloader_loaded(device)"},{"line_number":135,"context_line":"        and not (efi_system_part_uuid"},{"line_number":136,"context_line":"                 or prep_boot_part_uuid)):"},{"line_number":137,"context_line":"        # TODO(TheJulia): We should actually go one step furhter and"},{"line_number":138,"context_line":"        # check that the MBR pointer is present, but a way needs to"},{"line_number":139,"context_line":"        # be determined to do that correctly."}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_67409da3","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":42},"updated":"2019-08-30 14:24:26.000000000","message":"nit: can be on one line?","commit_id":"bcb57917b8e8791811a2ff026747b8efac959d3e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7577f09fa6b9be9eedc640183a2bb00da62686e1","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"def _is_bootloader_loaded(dev):"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _has_boot_sector(device):"},{"line_number":104,"context_line":"        stdout, stderr \u003d utils.execute(\u0027file\u0027, \u0027-s\u0027, device)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_fdb04442","line":101,"updated":"2019-10-16 09:30:26.000000000","message":"nit: a docstring would be handy","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"96788c874ba5ca339d8917ab4fc75f783e923c70","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        raise errors.CommandExecutionError(error_msg)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"def _is_bootloader_loaded(dev):"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _has_boot_sector(device):"},{"line_number":104,"context_line":"        stdout, stderr \u003d utils.execute(\u0027file\u0027, \u0027-s\u0027, device)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_01083d2b","line":101,"in_reply_to":"3fa7e38b_fdb04442","updated":"2019-10-30 13:10:24.000000000","message":"Done","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7577f09fa6b9be9eedc640183a2bb00da62686e1","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        stdout, stderr \u003d utils.execute(\u0027parted\u0027, dev, \u0027-s\u0027, \u0027-m\u0027,"},{"line_number":116,"context_line":"                                       \u0027--\u0027, \u0027print\u0027)"},{"line_number":117,"context_line":"    except OSError:"},{"line_number":118,"context_line":"        return False"},{"line_number":119,"context_line":"    lines \u003d stdout.splitlines()"},{"line_number":120,"context_line":"    for line in lines:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_3dab3cd6","line":117,"range":{"start_line":117,"start_character":11,"end_line":117,"end_character":18},"updated":"2019-10-16 09:30:26.000000000","message":"Do you expect the parted tool to be missing? I guess we require it already. Or did you mean ProcessExecutionError?","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"96788c874ba5ca339d8917ab4fc75f783e923c70","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    try:"},{"line_number":115,"context_line":"        stdout, stderr \u003d utils.execute(\u0027parted\u0027, dev, \u0027-s\u0027, \u0027-m\u0027,"},{"line_number":116,"context_line":"                                       \u0027--\u0027, \u0027print\u0027)"},{"line_number":117,"context_line":"    except OSError:"},{"line_number":118,"context_line":"        return False"},{"line_number":119,"context_line":"    lines \u003d stdout.splitlines()"},{"line_number":120,"context_line":"    for line in lines:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_c1530539","line":117,"range":{"start_line":117,"start_character":11,"end_line":117,"end_character":18},"in_reply_to":"3fa7e38b_3dab3cd6","updated":"2019-10-30 13:10:24.000000000","message":"I was thinking processexecutionerror, but I was also thinking the oserror one should catch it as well.","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7577f09fa6b9be9eedc640183a2bb00da62686e1","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    lines \u003d stdout.splitlines()"},{"line_number":120,"context_line":"    for line in lines:"},{"line_number":121,"context_line":"        partition \u003d line.split(\u0027:\u0027)"},{"line_number":122,"context_line":"        if len(partition) \u003e\u003d 7:"},{"line_number":123,"context_line":"            if \u0027boot\u0027 in partition[6]:"},{"line_number":124,"context_line":"                if (_has_boot_sector(dev)"},{"line_number":125,"context_line":"                    or _has_boot_sector(partition[0])):"},{"line_number":126,"context_line":"                    return True"},{"line_number":127,"context_line":"    return False"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_dde30833","line":125,"range":{"start_line":122,"start_character":0,"end_line":125,"end_character":55},"updated":"2019-10-16 09:30:26.000000000","message":"nit: I\u0027d reduce indentation. maybe\n\n try:\n     if \u0027boot\u0027 in partition[6]:\n         continue\n except IndexError:\n     continue","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7577f09fa6b9be9eedc640183a2bb00da62686e1","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                   or prep_boot_part_uuid)):"},{"line_number":147,"context_line":"        # We always need to put the bootloader in place with software raid"},{"line_number":148,"context_line":"        # so it is okay to elif into the skip doing a bootloader step."},{"line_number":149,"context_line":"        LOG.debug(\"Skipping installation of bootloader on device %s \""},{"line_number":150,"context_line":"                  \"as it is already marked bootable.\", device)"},{"line_number":151,"context_line":"        return"},{"line_number":152,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_1d99a0c2","line":149,"range":{"start_line":149,"start_character":12,"end_line":149,"end_character":17},"updated":"2019-10-16 09:30:26.000000000","message":"nit: s/debug/info/ for visibility?","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"96788c874ba5ca339d8917ab4fc75f783e923c70","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                   or prep_boot_part_uuid)):"},{"line_number":147,"context_line":"        # We always need to put the bootloader in place with software raid"},{"line_number":148,"context_line":"        # so it is okay to elif into the skip doing a bootloader step."},{"line_number":149,"context_line":"        LOG.debug(\"Skipping installation of bootloader on device %s \""},{"line_number":150,"context_line":"                  \"as it is already marked bootable.\", device)"},{"line_number":151,"context_line":"        return"},{"line_number":152,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_a104c919","line":149,"range":{"start_line":149,"start_character":12,"end_line":149,"end_character":17},"in_reply_to":"3fa7e38b_1d99a0c2","updated":"2019-10-30 13:10:24.000000000","message":"Done","commit_id":"b94b3ca777b25297fc1cebc2bd2733cc7301089c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5fe8e0e60dc32c5c075fffcd178357f5aeed73eb","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        \"\"\""},{"line_number":366,"context_line":"        device \u003d hardware.dispatch_to_managers(\u0027get_os_install_device\u0027)"},{"line_number":367,"context_line":"        iscsi.clean_up(device)"},{"line_number":368,"context_line":"        _install_grub2(device,"},{"line_number":369,"context_line":"                       root_uuid\u003droot_uuid,"},{"line_number":370,"context_line":"                       efi_system_part_uuid\u003defi_system_part_uuid,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_946fc290","line":367,"updated":"2019-10-31 18:40:07.000000000","message":"Looks like the latest failure was here and that we never got into this. We\u0027ve seen some success with IPA tearing down iscsi sessions, however with the ramdisk used it failed and while we\u0027re should be tolerating that failure... yeah. :(","commit_id":"ac7edac5b3ad1ddfd3b41cd818338664fab78baa"}]}
