)]}'
{"ironic/common/images.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    if not prefix_dir:"},{"line_number":167,"context_line":"        prefix_dir \u003d root_dir"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    for entry in os.listdir(root_dir):"},{"line_number":170,"context_line":"        path \u003d os.path.join(root_dir, entry)"},{"line_number":171,"context_line":"        if os.path.isdir(path):"},{"line_number":172,"context_line":"            files_info.update(_read_dir(path, prefix_dir))"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_c15a794d","line":169,"updated":"2020-03-27 10:10:48.000000000","message":"I think you invented os.walk :)","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    if not prefix_dir:"},{"line_number":167,"context_line":"        prefix_dir \u003d root_dir"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    for entry in os.listdir(root_dir):"},{"line_number":170,"context_line":"        path \u003d os.path.join(root_dir, entry)"},{"line_number":171,"context_line":"        if os.path.isdir(path):"},{"line_number":172,"context_line":"            files_info.update(_read_dir(path, prefix_dir))"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_90914b55","line":169,"in_reply_to":"df33271e_67105401","updated":"2020-04-03 11:05:00.000000000","message":"E-mail client with an embedded operating system. We got one already!","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"797d7956ff35ee1befc3012ba95415acb6e06d5b","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    if not prefix_dir:"},{"line_number":167,"context_line":"        prefix_dir \u003d root_dir"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    for entry in os.listdir(root_dir):"},{"line_number":170,"context_line":"        path \u003d os.path.join(root_dir, entry)"},{"line_number":171,"context_line":"        if os.path.isdir(path):"},{"line_number":172,"context_line":"            files_info.update(_read_dir(path, prefix_dir))"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_67105401","line":169,"in_reply_to":"df33271e_c15a794d","updated":"2020-04-02 23:41:49.000000000","message":"As long as it is not an email client ;)","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    if not prefix_dir:"},{"line_number":167,"context_line":"        prefix_dir \u003d root_dir"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    for entry in os.listdir(root_dir):"},{"line_number":170,"context_line":"        path \u003d os.path.join(root_dir, entry)"},{"line_number":171,"context_line":"        if os.path.isdir(path):"},{"line_number":172,"context_line":"            files_info.update(_read_dir(path, prefix_dir))"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_b0960f4b","line":169,"in_reply_to":"df33271e_c15a794d","updated":"2020-04-03 11:05:00.000000000","message":"II think I started out with `os.walk`, but then something turned out to be inconvenient with it. I can\u0027t recall it now.","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            utils.mount(image_path, mount_dir, \u0027-o\u0027, \u0027loop\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":201,"context_line":"            LOG.exception(\"mounting filesystem image %(image)s \""},{"line_number":202,"context_line":"                          \"failed: %(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":203,"context_line":"            raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_213fe5d6","line":201,"updated":"2020-03-27 10:10:48.000000000","message":"nit: Mounting","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            utils.mount(image_path, mount_dir, \u0027-o\u0027, \u0027loop\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":201,"context_line":"            LOG.exception(\"mounting filesystem image %(image)s \""},{"line_number":202,"context_line":"                          \"failed: %(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":203,"context_line":"            raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_50850306","line":201,"in_reply_to":"df33271e_213fe5d6","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":201,"context_line":"            LOG.exception(\"mounting filesystem image %(image)s \""},{"line_number":202,"context_line":"                          \"failed: %(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":203,"context_line":"            raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_e134ddfd","line":202,"updated":"2020-03-27 10:10:48.000000000","message":"nit: no need to add exception when used LOG.exception, the whole traceback will be logged anyway","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":201,"context_line":"            LOG.exception(\"mounting filesystem image %(image)s \""},{"line_number":202,"context_line":"                          \"failed: %(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":203,"context_line":"            raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_2b4e0e96","line":202,"in_reply_to":"df33271e_e134ddfd","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        try:"},{"line_number":206,"context_line":"            yield _read_dir(mount_dir)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        except (OSError, IOError) as e:"},{"line_number":209,"context_line":"            LOG.exception(\"examining image %(images)s failed: \""},{"line_number":210,"context_line":"                          \"%(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":211,"context_line":"            _umount_without_raise(mount_dir)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_6120cdb1","line":208,"range":{"start_line":208,"start_character":15,"end_line":208,"end_character":33},"updated":"2020-03-27 10:10:48.000000000","message":"nit: EnvironmentError is a base of both","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        try:"},{"line_number":206,"context_line":"            yield _read_dir(mount_dir)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        except (OSError, IOError) as e:"},{"line_number":209,"context_line":"            LOG.exception(\"examining image %(images)s failed: \""},{"line_number":210,"context_line":"                          \"%(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":211,"context_line":"            _umount_without_raise(mount_dir)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_4b471278","line":208,"range":{"start_line":208,"start_character":15,"end_line":208,"end_character":33},"in_reply_to":"df33271e_6120cdb1","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            yield _read_dir(mount_dir)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        except (OSError, IOError) as e:"},{"line_number":209,"context_line":"            LOG.exception(\"examining image %(images)s failed: \""},{"line_number":210,"context_line":"                          \"%(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":211,"context_line":"            _umount_without_raise(mount_dir)"},{"line_number":212,"context_line":"            raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_c12f199f","line":209,"updated":"2020-03-27 10:10:48.000000000","message":"nit: Examining\n\nalso not much use for LOG.exception, the traceback is obvious here.","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            yield _read_dir(mount_dir)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        except (OSError, IOError) as e:"},{"line_number":209,"context_line":"            LOG.exception(\"examining image %(images)s failed: \""},{"line_number":210,"context_line":"                          \"%(e)s\", {\u0027image\u0027: image_path, \u0027e\u0027: e})"},{"line_number":211,"context_line":"            _umount_without_raise(mount_dir)"},{"line_number":212,"context_line":"            raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_eb570625","line":209,"in_reply_to":"df33271e_c12f199f","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9b295ba3c07db9091f136a497971ce735cb414a9","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"def create_isolinux_image_for_bios("},{"line_number":218,"context_line":"        output_file, kernel, ramdisk, configdrive\u003dNone, kernel_params\u003dNone):"},{"line_number":219,"context_line":"    \"\"\"Creates an isolinux image on the specified file."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    Copies the provided kernel, ramdisk to a directory, generates the isolinux"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_b40d2c40","line":218,"range":{"start_line":218,"start_character":39,"end_line":218,"end_character":55},"updated":"2020-03-24 19:09:54.000000000","message":"configdrive is being added, and should thus be after kernel_params in case this is invoked with positional arguments.","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"def create_isolinux_image_for_bios("},{"line_number":218,"context_line":"        output_file, kernel, ramdisk, configdrive\u003dNone, kernel_params\u003dNone):"},{"line_number":219,"context_line":"    \"\"\"Creates an isolinux image on the specified file."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    Copies the provided kernel, ramdisk to a directory, generates the isolinux"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_cb27a2c6","line":218,"range":{"start_line":218,"start_character":39,"end_line":218,"end_character":55},"in_reply_to":"df33271e_b40d2c40","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            try:"},{"line_number":269,"context_line":"                _create_root_fs(tmpdir, files_info)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            except (OSError, IOError) as e:"},{"line_number":272,"context_line":"                LOG.exception(\"Creating the filesystem root failed.\")"},{"line_number":273,"context_line":"                raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_810eb138","line":271,"updated":"2020-03-27 10:10:48.000000000","message":"ditto re EnvironmentError\n\nactually, this snippet is used twice, can the exception handling be moved to _create_root_fs?","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            try:"},{"line_number":269,"context_line":"                _create_root_fs(tmpdir, files_info)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"            except (OSError, IOError) as e:"},{"line_number":272,"context_line":"                LOG.exception(\"Creating the filesystem root failed.\")"},{"line_number":273,"context_line":"                raise exception.ImageCreationFailed(image_type\u003d\u0027iso\u0027, error\u003de)"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_4b155248","line":271,"in_reply_to":"df33271e_810eb138","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9b295ba3c07db9091f136a497971ce735cb414a9","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        try:"},{"line_number":282,"context_line":"            utils.execute(\u0027mkisofs\u0027, \u0027-r\u0027, \u0027-V\u0027,"},{"line_number":283,"context_line":"                          \u0027config-2\u0027 if configdrive else \u0027VMEDIA_BOOT_ISO\u0027,"},{"line_number":284,"context_line":"                          \u0027-cache-inodes\u0027, \u0027-J\u0027, \u0027-l\u0027, \u0027-no-emul-boot\u0027,"},{"line_number":285,"context_line":"                          \u0027-boot-load-size\u0027, \u00274\u0027, \u0027-boot-info-table\u0027,"},{"line_number":286,"context_line":"                          \u0027-b\u0027, ISOLINUX_BIN, \u0027-o\u0027, output_file, tmpdir)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_f407b41b","line":283,"updated":"2020-03-24 19:09:54.000000000","message":"crafty! I like it!","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        try:"},{"line_number":282,"context_line":"            utils.execute(\u0027mkisofs\u0027, \u0027-r\u0027, \u0027-V\u0027,"},{"line_number":283,"context_line":"                          \u0027config-2\u0027 if configdrive else \u0027VMEDIA_BOOT_ISO\u0027,"},{"line_number":284,"context_line":"                          \u0027-cache-inodes\u0027, \u0027-J\u0027, \u0027-l\u0027, \u0027-no-emul-boot\u0027,"},{"line_number":285,"context_line":"                          \u0027-boot-load-size\u0027, \u00274\u0027, \u0027-boot-info-table\u0027,"},{"line_number":286,"context_line":"                          \u0027-b\u0027, ISOLINUX_BIN, \u0027-o\u0027, output_file, tmpdir)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_ab0fbe34","line":283,"in_reply_to":"df33271e_f407b41b","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"def create_esp_image_for_uefi("},{"line_number":293,"context_line":"        output_file, kernel, ramdisk, deploy_iso\u003dNone, esp_image\u003dNone,"},{"line_number":294,"context_line":"        configdrive\u003dNone, kernel_params\u003dNone):"},{"line_number":295,"context_line":"    \"\"\"Creates an ESP image on the specified file."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    Copies the provided kernel, ramdisk and EFI system partition image (ESP) to"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_2118857f","line":294,"updated":"2020-03-27 10:10:48.000000000","message":"I guess same comment here re positional arguments?","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"def create_esp_image_for_uefi("},{"line_number":293,"context_line":"        output_file, kernel, ramdisk, deploy_iso\u003dNone, esp_image\u003dNone,"},{"line_number":294,"context_line":"        configdrive\u003dNone, kernel_params\u003dNone):"},{"line_number":295,"context_line":"    \"\"\"Creates an ESP image on the specified file."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    Copies the provided kernel, ramdisk and EFI system partition image (ESP) to"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_6607ad19","line":294,"in_reply_to":"df33271e_2118857f","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                try:"},{"line_number":366,"context_line":"                    _create_root_fs(tmpdir, files_info)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"                except (OSError, IOError) as e:"},{"line_number":369,"context_line":"                    LOG.exception(\"Creating the filesystem root failed.\")"},{"line_number":370,"context_line":"                    raise exception.ImageCreationFailed("},{"line_number":371,"context_line":"                        image_type\u003d\u0027iso\u0027, error\u003de)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_6109ed2f","line":368,"updated":"2020-03-27 10:10:48.000000000","message":"ditto","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                try:"},{"line_number":366,"context_line":"                    _create_root_fs(tmpdir, files_info)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"                except (OSError, IOError) as e:"},{"line_number":369,"context_line":"                    LOG.exception(\"Creating the filesystem root failed.\")"},{"line_number":370,"context_line":"                    raise exception.ImageCreationFailed("},{"line_number":371,"context_line":"                        image_type\u003d\u0027iso\u0027, error\u003de)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_860f512c","line":368,"in_reply_to":"df33271e_6109ed2f","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9b295ba3c07db9091f136a497971ce735cb414a9","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"def create_boot_iso(context, output_filename, kernel_href,"},{"line_number":513,"context_line":"                    ramdisk_href, deploy_iso_href\u003dNone, esp_image_href\u003dNone,"},{"line_number":514,"context_line":"                    configdrive_href\u003dNone, root_uuid\u003dNone, kernel_params\u003dNone,"},{"line_number":515,"context_line":"                    boot_mode\u003dNone):"},{"line_number":516,"context_line":"    \"\"\"Creates a bootable ISO image for a node."},{"line_number":517,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_df3569dc","line":514,"range":{"start_line":514,"start_character":20,"end_line":514,"end_character":41},"updated":"2020-03-24 19:09:54.000000000","message":"This is a utility method available to drivers which means the new value should go at the end in case someone has use positional arguments.","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"def create_boot_iso(context, output_filename, kernel_href,"},{"line_number":513,"context_line":"                    ramdisk_href, deploy_iso_href\u003dNone, esp_image_href\u003dNone,"},{"line_number":514,"context_line":"                    configdrive_href\u003dNone, root_uuid\u003dNone, kernel_params\u003dNone,"},{"line_number":515,"context_line":"                    boot_mode\u003dNone):"},{"line_number":516,"context_line":"    \"\"\"Creates a bootable ISO image for a node."},{"line_number":517,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_c62e798a","line":514,"range":{"start_line":514,"start_character":20,"end_line":514,"end_character":41},"in_reply_to":"df33271e_df3569dc","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"}],"ironic/drivers/modules/redfish/boot.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3b1b6fdcb57103d216ba1622404b88db1b3a0dd5","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"                configdrive_href \u003d configdrive"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"                if configdrive:"},{"line_number":482,"context_line":"                    parsed_url \u003d urlparse.urlparse(configdrive)"},{"line_number":483,"context_line":"                    if not parsed_url.scheme:"},{"line_number":484,"context_line":"                        cfgdrv_blob \u003d base64.decode_as_bytes(configdrive)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9209eb95","line":481,"range":{"start_line":481,"start_character":16,"end_line":481,"end_character":31},"updated":"2019-11-05 07:52:01.000000000","message":"Can we move this check at L476 before creating tempfile?","commit_id":"1fa4a24338704f5564a07bfb6aeccc7a2c90a03a"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"43d92a674f4c843f90e25fbd95809b8361c3664b","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"                configdrive_href \u003d configdrive"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"                if configdrive:"},{"line_number":482,"context_line":"                    parsed_url \u003d urlparse.urlparse(configdrive)"},{"line_number":483,"context_line":"                    if not parsed_url.scheme:"},{"line_number":484,"context_line":"                        cfgdrv_blob \u003d base64.decode_as_bytes(configdrive)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_421dbabc","line":481,"range":{"start_line":481,"start_character":16,"end_line":481,"end_character":31},"in_reply_to":"3fa7e38b_9209eb95","updated":"2019-11-28 10:23:03.000000000","message":"++ it makes sense as the resulting tempfile is used only if configdrive is defined\nprobably need to move L479 as well","commit_id":"1fa4a24338704f5564a07bfb6aeccc7a2c90a03a"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"43d92a674f4c843f90e25fbd95809b8361c3664b","unresolved":false,"context_lines":[{"line_number":493,"context_line":"                             \"for node %(node)s\", {\u0027url\u0027: configdrive_href,"},{"line_number":494,"context_line":"                                                   \u0027node\u0027: task.node.uuid})"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"                boot_iso_tmp_file \u003d boot_fileobj.name"},{"line_number":497,"context_line":"                images.create_boot_iso("},{"line_number":498,"context_line":"                    task.context, boot_iso_tmp_file,"},{"line_number":499,"context_line":"                    kernel_href, ramdisk_href,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_62f6b660","line":496,"updated":"2019-11-28 10:23:03.000000000","message":"maybe move this up to L509 outside of the second with ?","commit_id":"1fa4a24338704f5564a07bfb6aeccc7a2c90a03a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                            f.write(cfgdrv_blob)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"                        configdrive_href \u003d urlparse.urlunparse("},{"line_number":491,"context_line":"                            (\u0027file\u0027, \u0027\u0027, cfgdrv_fileobj.name, \u0027\u0027, \u0027\u0027, \u0027\u0027))"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"                    LOG.info(\"Burning configdrive %(url)s to boot ISO image \""},{"line_number":494,"context_line":"                             \"for node %(node)s\", {\u0027url\u0027: configdrive_href,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_9418b175","line":491,"updated":"2020-03-27 10:10:48.000000000","message":"nit:\n\n \u0027file://%s\u0027 % cfgdrv_fileobj.name","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                            f.write(cfgdrv_blob)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"                        configdrive_href \u003d urlparse.urlunparse("},{"line_number":491,"context_line":"                            (\u0027file\u0027, \u0027\u0027, cfgdrv_fileobj.name, \u0027\u0027, \u0027\u0027, \u0027\u0027))"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"                    LOG.info(\"Burning configdrive %(url)s to boot ISO image \""},{"line_number":494,"context_line":"                             \"for node %(node)s\", {\u0027url\u0027: configdrive_href,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_e6b61d3e","line":491,"in_reply_to":"df33271e_9418b175","updated":"2020-04-03 11:05:00.000000000","message":"I\u0027d sleep better outsourcing URL building to somebody else. What\u0027s the reason to do it manually if we have a tool?","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"66867358890fc00c4818f5a330597e5cdd630908","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                            f.write(cfgdrv_blob)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"                        configdrive_href \u003d urlparse.urlunparse("},{"line_number":491,"context_line":"                            (\u0027file\u0027, \u0027\u0027, cfgdrv_fileobj.name, \u0027\u0027, \u0027\u0027, \u0027\u0027))"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"                    LOG.info(\"Burning configdrive %(url)s to boot ISO image \""},{"line_number":494,"context_line":"                             \"for node %(node)s\", {\u0027url\u0027: configdrive_href,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_0a7c7be9","line":491,"in_reply_to":"df33271e_af12c156","updated":"2020-04-08 10:01:00.000000000","message":"I think the tool is correct, it\u0027s just that the file URI does not have some of the components of the URL URI.","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"30a43b4cf576a3473485e938dbe7f816e5cba00c","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                            f.write(cfgdrv_blob)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"                        configdrive_href \u003d urlparse.urlunparse("},{"line_number":491,"context_line":"                            (\u0027file\u0027, \u0027\u0027, cfgdrv_fileobj.name, \u0027\u0027, \u0027\u0027, \u0027\u0027))"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"                    LOG.info(\"Burning configdrive %(url)s to boot ISO image \""},{"line_number":494,"context_line":"                             \"for node %(node)s\", {\u0027url\u0027: configdrive_href,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_af12c156","line":491,"in_reply_to":"df33271e_e6b61d3e","updated":"2020-04-08 08:48:01.000000000","message":"Because the tool is not designed for that, as you can see by supplying 4 empty strings.","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"}],"releasenotes/notes/add-redfish-configdrive-e629d9880ff3e19d.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"868f2ee3a04f382a2dcfd6d99060d10db16930cc","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":"    Adds the ability to write configdrive contents on the boot images that"},{"line_number":5,"context_line":"    ironic produces. Such boot image will be labeled as ``config-2`` to"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"df33271e_b43695e5","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"updated":"2020-03-27 10:10:48.000000000","message":"Is it user-visible at this point? It doesn\u0027t seem to, let\u0027s maybe skip the release note until we have something that operators can use?","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"33e38f12f62746d9ea7c7120d84ed0fcfd9e0e78","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":"    Adds the ability to write configdrive contents on the boot images that"},{"line_number":5,"context_line":"    ironic produces. Such boot image will be labeled as ``config-2`` to"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"df33271e_e6e45d3e","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"in_reply_to":"df33271e_b43695e5","updated":"2020-04-03 11:05:00.000000000","message":"Done","commit_id":"75f2e30fcb649def6966439655168352c0bc1f84"}]}
