)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7fdb34acfc5bf988d5448deab4ac8ae5a1905b60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bf9ae74a_e8b2ac64","updated":"2022-06-23 15:26:23.000000000","message":"Thanks for the review Dmitry. Sorry for the delay in responding.","commit_id":"09d8a94d5a9b3cabdf7fddc483821fd0df69e5ee"}],"ironic/common/kickstart_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"49b2c46f47d1430006f68896fddca8942c46aa37","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                iso_path\u003diso_file_path, outfp\u003db_buf"},{"line_number":56,"context_line":"            )"},{"line_number":57,"context_line":"            b_buf.seek(0)"},{"line_number":58,"context_line":"            content \u003d b\"\".join(b_buf.readlines()).decode(\u0027utf-8\u0027)"},{"line_number":59,"context_line":"            drive_dict[target_file_path] \u003d content"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ee314c74_b722699d","line":58,"updated":"2022-03-11 10:27:22.000000000","message":"nit:\n\n content \u003d b_buf.getvalue().decode(\u0027utf-8\u0027)","commit_id":"09d8a94d5a9b3cabdf7fddc483821fd0df69e5ee"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"49b2c46f47d1430006f68896fddca8942c46aa37","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    for key in sorted(config_drive.keys()):"},{"line_number":164,"context_line":"        target_path \u003d os.path.join(config_drive_path, key)"},{"line_number":165,"context_line":"        ks_config_drive +\u003d _write_config_drive_content("},{"line_number":166,"context_line":"            config_drive[key], target_path"},{"line_number":167,"context_line":"        )"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    return ks_config_drive"}],"source_content_type":"text/x-python","patch_set":5,"id":"6ebaf4e1_c4eee245","line":166,"updated":"2022-03-11 10:27:22.000000000","message":"In case of config_driver as a dict, they keys are simply \"user_data\", \"meta_data\", the values may be dictionaries themselves. Does this code account for it?\n\nAre there unit tests?","commit_id":"09d8a94d5a9b3cabdf7fddc483821fd0df69e5ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7fdb34acfc5bf988d5448deab4ac8ae5a1905b60","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    for key in sorted(config_drive.keys()):"},{"line_number":164,"context_line":"        target_path \u003d os.path.join(config_drive_path, key)"},{"line_number":165,"context_line":"        ks_config_drive +\u003d _write_config_drive_content("},{"line_number":166,"context_line":"            config_drive[key], target_path"},{"line_number":167,"context_line":"        )"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    return ks_config_drive"}],"source_content_type":"text/x-python","patch_set":5,"id":"bc96dcf6_42063312","line":166,"in_reply_to":"6ebaf4e1_c4eee245","updated":"2022-06-23 15:26:23.000000000","message":"Sigh. We don\u0027t have people to continue this work. I thought I\u0027d find some time to do it, but I haven\u0027t, so I\u0027ve opened a story to track this defect: https://storyboard.openstack.org/#!/story/2010106.","commit_id":"09d8a94d5a9b3cabdf7fddc483821fd0df69e5ee"}],"ironic/tests/unit/common/test_kickstart_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ed5f69fb5ca37871d183cb73297ff1479fac33e8","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \"openstack/content/0000\": \"net-data\","},{"line_number":89,"context_line":"            \"openstack/latest/meta-data.json\": \"{}\","},{"line_number":90,"context_line":"            \"openstack/latest/user_data\": \"test user_data\","},{"line_number":91,"context_line":"            \"openstack/latest/vendor_data.json\": \"{}\""},{"line_number":92,"context_line":"        }"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _get_expected_ks_config_drive(self, config_drive_dict):"}],"source_content_type":"text/x-python","patch_set":5,"id":"f3f0cbe7_ebd34a9c","line":91,"updated":"2022-03-11 10:29:12.000000000","message":"Yeah, this is definitely not how config drive looks in our API","commit_id":"09d8a94d5a9b3cabdf7fddc483821fd0df69e5ee"}]}
