)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5a2d20c636b18ec96126bddd8d7dcf6aab5629da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8bca8431_c0f9a9e4","updated":"2022-02-07 17:13:06.000000000","message":"Fixed a typo in the release note. Had +2 before, approving.","commit_id":"51a13600a1355f0c6c9e1fa895fa9222da504f45"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"85ef6825e112d5f2d2f9ffa791499766aab3f39e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c600e988_3c0854e4","updated":"2022-02-07 17:21:31.000000000","message":"I think it\u0027s fine to follow-up, but a backport may be harder. Will leave up to you to decide.","commit_id":"51a13600a1355f0c6c9e1fa895fa9222da504f45"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b7fb49fa47f648b83f17b54f3a3074dfee3ab6f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d654d93a_7847a3ce","updated":"2022-02-08 16:09:56.000000000","message":"Based on feedback, want to make some more changes.","commit_id":"84d4dd7da8944f2b9e8add8494e049fcc5507e5f"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1a831eb5132f5c6e1b9c508d0827b00b74a94ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"56a68550_5f4102b5","updated":"2022-02-28 04:19:18.000000000","message":"I just happened to be trying the anaconda deploy interface, and this change got me further but I hit issues in validate_kickstart_file. Also ksvalidator failed validation on the packaged ks.cfg.template because the %traceback section is deprecated (it can just be removed because there is a %onerror section). ","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"a48d245b3c667fd219b4e8531d337800cf8efff5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c2d69db1_d97b4ca5","updated":"2022-02-28 13:49:03.000000000","message":"remove +@ based on latest comments","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"501eff2ca32e574da5282e058f3a14575e6596de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e1b9ef85_b339ac87","updated":"2022-02-28 16:39:53.000000000","message":"Thanks for testing this Steve! We\u0027re using wallaby (with some secret sauce) so I haven\u0027t tested this beyond our use case.","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"20a8e4866302e69f01190d602fbd3679a96c6ce2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f4940fce_ae7bc998","updated":"2022-03-04 19:12:07.000000000","message":"Thanks for the reviews! I\u0027ve addressed the nits in https://review.opendev.org/c/openstack/ironic/+/831964.","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"}],"ironic/common/pxe_utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea40c17051081b94a97c6e239e5da3de6aface3c","unresolved":true,"context_lines":[{"line_number":691,"context_line":"        if not (i_info.get(\u0027stage2\u0027) and i_info.get(\u0027ks_template\u0027)):"},{"line_number":692,"context_line":"            # NOTE(rloo): If both are not in instance_info, we\u0027re"},{"line_number":693,"context_line":"            # not going to use them. We\u0027ll use the values specified with"},{"line_number":694,"context_line":"            # the image or default config if not specified with the image."},{"line_number":695,"context_line":"            if not image_properties:"},{"line_number":696,"context_line":"                glance_service \u003d service.GlanceImageService(context\u003dctx)"},{"line_number":697,"context_line":"                image_properties \u003d glance_service.show("}],"source_content_type":"text/x-python","patch_set":1,"id":"48b97751_1ba2748e","line":694,"updated":"2022-02-07 17:15:10.000000000","message":"I coded this based on what Arun? told me. But this bothers me a bit. Not sure why we couldn\u0027t use the ks.template specified in instance_info, and stage2 from the glance image/OS. If anyone knows/thinks that we need both specified here, please let me know why. (Has been on my list to look into but haven\u0027t had time and after we land this, it will be harder to modify the behaviour if we think we want to...)","commit_id":"4e6177fef78a9b73edc43950937286dd1de2fb21"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7a67d73e13d08df15ffa840f418acd1344c8f5fc","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        if not (i_info.get(\u0027stage2\u0027) and i_info.get(\u0027ks_template\u0027)):"},{"line_number":692,"context_line":"            # NOTE(rloo): If both are not in instance_info, we\u0027re"},{"line_number":693,"context_line":"            # not going to use them. We\u0027ll use the values specified with"},{"line_number":694,"context_line":"            # the image or default config if not specified with the image."},{"line_number":695,"context_line":"            if not image_properties:"},{"line_number":696,"context_line":"                glance_service \u003d service.GlanceImageService(context\u003dctx)"},{"line_number":697,"context_line":"                image_properties \u003d glance_service.show("}],"source_content_type":"text/x-python","patch_set":1,"id":"2fc262cb_70328f7f","line":694,"in_reply_to":"01854e3b_c7912987","updated":"2022-02-07 20:23:58.000000000","message":"Done","commit_id":"4e6177fef78a9b73edc43950937286dd1de2fb21"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3a533f0c8f0e6928487665eeedb00ad7bed84aca","unresolved":true,"context_lines":[{"line_number":691,"context_line":"        if not (i_info.get(\u0027stage2\u0027) and i_info.get(\u0027ks_template\u0027)):"},{"line_number":692,"context_line":"            # NOTE(rloo): If both are not in instance_info, we\u0027re"},{"line_number":693,"context_line":"            # not going to use them. We\u0027ll use the values specified with"},{"line_number":694,"context_line":"            # the image or default config if not specified with the image."},{"line_number":695,"context_line":"            if not image_properties:"},{"line_number":696,"context_line":"                glance_service \u003d service.GlanceImageService(context\u003dctx)"},{"line_number":697,"context_line":"                image_properties \u003d glance_service.show("}],"source_content_type":"text/x-python","patch_set":1,"id":"01854e3b_c7912987","line":694,"in_reply_to":"48b97751_1ba2748e","updated":"2022-02-07 18:03:57.000000000","message":"Discussed on irc with Dmitry and we agreed that we should use whatever was specified in instance_info.","commit_id":"4e6177fef78a9b73edc43950937286dd1de2fb21"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c5ea3378fa20ac59fd25ea60b4dcfbe4de799483","unresolved":false,"context_lines":[{"line_number":1209,"context_line":"    ensure_tree(path)"},{"line_number":1210,"context_line":"    # anaconda deploy will have \u0027stage2\u0027 as one of the labels in pxe_info dict"},{"line_number":1211,"context_line":"    if \u0027stage2\u0027 in pxe_info.keys():"},{"line_number":1212,"context_line":"        # stage2 will be stored in ipxe http directory so make sure the"},{"line_number":1213,"context_line":"        # directory exists."},{"line_number":1214,"context_line":"        file_path \u003d get_file_path_from_label(node.uuid,"},{"line_number":1215,"context_line":"                                             CONF.deploy.http_root,"},{"line_number":1216,"context_line":"                                             \u0027stage2\u0027)"},{"line_number":1217,"context_line":"        ensure_tree(os.path.dirname(file_path))"},{"line_number":1218,"context_line":"        # ks_cfg is rendered later by the driver using ks_template. It cannot"},{"line_number":1219,"context_line":"        # be fetched and cached."},{"line_number":1220,"context_line":"        t_pxe_info.pop(\u0027ks_cfg\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2f931732_98143e33","line":1217,"range":{"start_line":1212,"start_character":0,"end_line":1217,"end_character":47},"updated":"2022-02-04 21:35:49.000000000","message":"\\o/ This looks like it will fix the issue the downstream user is reporting. Thanks Ruby!","commit_id":"4e6177fef78a9b73edc43950937286dd1de2fb21"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1a831eb5132f5c6e1b9c508d0827b00b74a94ad","unresolved":true,"context_lines":[{"line_number":1100,"context_line":"        return"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":1103,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.cfg\u0027) as ks_file:"},{"line_number":1104,"context_line":"        ks_file.writelines(ks_cfg)"},{"line_number":1105,"context_line":"        try:"},{"line_number":1106,"context_line":"            result \u003d utils.execute("}],"source_content_type":"text/x-python","patch_set":4,"id":"8319f497_9cbc4e94","line":1103,"range":{"start_line":1103,"start_character":43,"end_line":1103,"end_character":44},"updated":"2022-02-28 04:19:18.000000000","message":"mode\u003d\u0027wt\u0027, otherwise I get an encoding error","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"501eff2ca32e574da5282e058f3a14575e6596de","unresolved":false,"context_lines":[{"line_number":1100,"context_line":"        return"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":1103,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.cfg\u0027) as ks_file:"},{"line_number":1104,"context_line":"        ks_file.writelines(ks_cfg)"},{"line_number":1105,"context_line":"        try:"},{"line_number":1106,"context_line":"            result \u003d utils.execute("}],"source_content_type":"text/x-python","patch_set":4,"id":"78de8daf_ca70c1d2","line":1103,"range":{"start_line":1103,"start_character":43,"end_line":1103,"end_character":44},"in_reply_to":"8319f497_9cbc4e94","updated":"2022-02-28 16:39:53.000000000","message":"Done","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1a831eb5132f5c6e1b9c508d0827b00b74a94ad","unresolved":true,"context_lines":[{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":1103,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.cfg\u0027) as ks_file:"},{"line_number":1104,"context_line":"        ks_file.writelines(ks_cfg)"},{"line_number":1105,"context_line":"        try:"},{"line_number":1106,"context_line":"            result \u003d utils.execute("},{"line_number":1107,"context_line":"                \u0027ksvalidator\u0027, ks_file.name, check_on_exit\u003d[0], attempts\u003d1"}],"source_content_type":"text/x-python","patch_set":4,"id":"cab5565c_e1058844","line":1104,"range":{"start_line":1104,"start_character":16,"end_line":1104,"end_character":26},"updated":"2022-02-28 04:19:18.000000000","message":"writelines is meant to be for a list of strings, whereas this is just a string. This would be better:\n\n  ks_file.write(ks_cfg)\n  ks_file.flush()","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"501eff2ca32e574da5282e058f3a14575e6596de","unresolved":false,"context_lines":[{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":1103,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.cfg\u0027) as ks_file:"},{"line_number":1104,"context_line":"        ks_file.writelines(ks_cfg)"},{"line_number":1105,"context_line":"        try:"},{"line_number":1106,"context_line":"            result \u003d utils.execute("},{"line_number":1107,"context_line":"                \u0027ksvalidator\u0027, ks_file.name, check_on_exit\u003d[0], attempts\u003d1"}],"source_content_type":"text/x-python","patch_set":4,"id":"7071f993_44210335","line":1104,"range":{"start_line":1104,"start_character":16,"end_line":1104,"end_character":26},"in_reply_to":"cab5565c_e1058844","updated":"2022-02-28 16:39:53.000000000","message":"Done","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1a831eb5132f5c6e1b9c508d0827b00b74a94ad","unresolved":true,"context_lines":[{"line_number":1106,"context_line":"            result \u003d utils.execute("},{"line_number":1107,"context_line":"                \u0027ksvalidator\u0027, ks_file.name, check_on_exit\u003d[0], attempts\u003d1"},{"line_number":1108,"context_line":"            )"},{"line_number":1109,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1110,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1111,"context_line":"                     \"The ksvalidator tool returned following error(s): %s\") %"},{"line_number":1112,"context_line":"                    (result))"}],"source_content_type":"text/x-python","patch_set":4,"id":"20e2312f_11d9f494","line":1109,"range":{"start_line":1109,"start_character":49,"end_line":1109,"end_character":50},"updated":"2022-02-28 04:19:18.000000000","message":"as e","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"501eff2ca32e574da5282e058f3a14575e6596de","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"            result \u003d utils.execute("},{"line_number":1107,"context_line":"                \u0027ksvalidator\u0027, ks_file.name, check_on_exit\u003d[0], attempts\u003d1"},{"line_number":1108,"context_line":"            )"},{"line_number":1109,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1110,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1111,"context_line":"                     \"The ksvalidator tool returned following error(s): %s\") %"},{"line_number":1112,"context_line":"                    (result))"}],"source_content_type":"text/x-python","patch_set":4,"id":"4a6aeb4b_23fa92b8","line":1109,"range":{"start_line":1109,"start_character":49,"end_line":1109,"end_character":50},"in_reply_to":"20e2312f_11d9f494","updated":"2022-02-28 16:39:53.000000000","message":"Done","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1a831eb5132f5c6e1b9c508d0827b00b74a94ad","unresolved":true,"context_lines":[{"line_number":1109,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1110,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1111,"context_line":"                     \"The ksvalidator tool returned following error(s): %s\") %"},{"line_number":1112,"context_line":"                    (result))"},{"line_number":1113,"context_line":"            raise exception.InvalidKickstartFile(msg)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a88f656_a4353647","line":1112,"range":{"start_line":1112,"start_character":21,"end_line":1112,"end_character":27},"updated":"2022-02-28 04:19:18.000000000","message":"there will be no result if an exception is raised, this should be e","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cca3cc1aa9889fa0d6e91556a30f6a98f2e2d28c","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1110,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1111,"context_line":"                     \"The ksvalidator tool returned following error(s): %s\") %"},{"line_number":1112,"context_line":"                    (result))"},{"line_number":1113,"context_line":"            raise exception.InvalidKickstartFile(msg)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ec9d05c0_4770d671","line":1112,"range":{"start_line":1112,"start_character":21,"end_line":1112,"end_character":27},"in_reply_to":"68a651df_a8357099","updated":"2022-02-28 16:41:03.000000000","message":"Done","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"501eff2ca32e574da5282e058f3a14575e6596de","unresolved":true,"context_lines":[{"line_number":1109,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":1110,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1111,"context_line":"                     \"The ksvalidator tool returned following error(s): %s\") %"},{"line_number":1112,"context_line":"                    (result))"},{"line_number":1113,"context_line":"            raise exception.InvalidKickstartFile(msg)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"68a651df_a8357099","line":1112,"range":{"start_line":1112,"start_character":21,"end_line":1112,"end_character":27},"in_reply_to":"9a88f656_a4353647","updated":"2022-02-28 16:39:53.000000000","message":"Thx for testing this! (Cuz I didn\u0027t ...)","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":696,"context_line":"            if not i_info.get(\u0027ks_template\u0027):"},{"line_number":697,"context_line":"                # ks_template is an optional property on the image"},{"line_number":698,"context_line":"                if \u0027ks_template\u0027 not in image_properties:"},{"line_number":699,"context_line":"                    i_info[\u0027ks_template\u0027] \u003d CONF.anaconda.default_ks_template"},{"line_number":700,"context_line":"                else:"},{"line_number":701,"context_line":"                    i_info[\u0027ks_template\u0027] \u003d str("},{"line_number":702,"context_line":"                        image_properties[\u0027ks_template\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"8d35d843_de7ac6dd","line":699,"updated":"2022-03-03 10:47:27.000000000","message":"nit: I\u0027d rather not update the user-visible instance_info with an internal path. this could be handled where the value is used.","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"343c24a6c29be8cf7ac849f3f0409132591faa39","unresolved":false,"context_lines":[{"line_number":696,"context_line":"            if not i_info.get(\u0027ks_template\u0027):"},{"line_number":697,"context_line":"                # ks_template is an optional property on the image"},{"line_number":698,"context_line":"                if \u0027ks_template\u0027 not in image_properties:"},{"line_number":699,"context_line":"                    i_info[\u0027ks_template\u0027] \u003d CONF.anaconda.default_ks_template"},{"line_number":700,"context_line":"                else:"},{"line_number":701,"context_line":"                    i_info[\u0027ks_template\u0027] \u003d str("},{"line_number":702,"context_line":"                        image_properties[\u0027ks_template\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"eeb29caa_d3afac02","line":699,"in_reply_to":"8d35d843_de7ac6dd","updated":"2022-03-03 15:28:58.000000000","message":"Good catch! It isn\u0027t just a nit. It is a problem but wasn\u0027t sure I should be modifying that in this PR since I want to backport the PR and didn\u0027t know if fixing this part was backportable. Let me see what I can do (this breaks rebuilds so maybe it is backportable...)","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":702,"context_line":"                        image_properties[\u0027ks_template\u0027])"},{"line_number":703,"context_line":"            if not i_info.get(\u0027stage2\u0027):"},{"line_number":704,"context_line":"                if \u0027stage2_id\u0027 not in image_properties:"},{"line_number":705,"context_line":"                    msg \u003d (\"\u0027stage2_id\u0027 property is missing from the OS image \""},{"line_number":706,"context_line":"                           \"%s. The anaconda deploy interface requires this \""},{"line_number":707,"context_line":"                           \"to be set with the OS image or in instance_info. \""},{"line_number":708,"context_line":"                           % d_info[\u0027image_source\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"359b6155_7036f492","line":705,"updated":"2022-03-03 10:47:27.000000000","message":"missing _()\n\nnit: \"from the properties of the ...\"","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":710,"context_line":"                else:"},{"line_number":711,"context_line":"                    i_info[\u0027stage2\u0027] \u003d str(image_properties[\u0027stage2_id\u0027])"},{"line_number":712,"context_line":"        # NOTE(rloo): This is internally generated; cannot be specified."},{"line_number":713,"context_line":"        i_info[\u0027ks_cfg\u0027] \u003d \u0027\u0027"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"        node.instance_info \u003d i_info"},{"line_number":716,"context_line":"        node.save()"}],"source_content_type":"text/x-python","patch_set":5,"id":"361169d0_28cf82d8","line":713,"updated":"2022-03-03 10:47:27.000000000","message":"nit: Instance info is a user-provided field, we should stop the practice of putting our internal fields there. This is what driver_internal_info is for.","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":1108,"context_line":"                \u0027ksvalidator\u0027, ks_file.name, check_on_exit\u003d[0], attempts\u003d1"},{"line_number":1109,"context_line":"            )"},{"line_number":1110,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1111,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1112,"context_line":"                     \"The ksvalidator tool returned the following error: %s\") %"},{"line_number":1113,"context_line":"                    (e))"},{"line_number":1114,"context_line":"            raise exception.InvalidKickstartFile(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9b2726c1_1b71c54c","line":1111,"updated":"2022-03-03 10:47:27.000000000","message":"_() has to be around the inner string (the constant), not the outer","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1111,"context_line":"            msg \u003d _((\"The kickstart file generated does not pass validation. \""},{"line_number":1112,"context_line":"                     \"The ksvalidator tool returned the following error: %s\") %"},{"line_number":1113,"context_line":"                    (e))"},{"line_number":1114,"context_line":"            raise exception.InvalidKickstartFile(msg)"},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"4f94ad64_a5d36473","line":1113,"updated":"2022-03-03 10:47:27.000000000","message":"nit: redundant brackets","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":1209,"context_line":"        path \u003d os.path.join(CONF.pxe.tftp_root, node.uuid)"},{"line_number":1210,"context_line":"    ensure_tree(path)"},{"line_number":1211,"context_line":"    # anaconda deploy will have \u0027stage2\u0027 as one of the labels in pxe_info dict"},{"line_number":1212,"context_line":"    if \u0027stage2\u0027 in pxe_info.keys():"},{"line_number":1213,"context_line":"        # stage2 will be stored in ipxe http directory so make sure the"},{"line_number":1214,"context_line":"        # directory exists."},{"line_number":1215,"context_line":"        file_path \u003d get_file_path_from_label(node.uuid,"}],"source_content_type":"text/x-python","patch_set":5,"id":"26b2483c_f37828cf","line":1212,"updated":"2022-03-03 10:47:27.000000000","message":"nit: .keys() redundant","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"26088f9a3661d33fa5fc12b5524cff8a47d89fe3","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                    i_info[\u0027image_source\u0027])):"},{"line_number":864,"context_line":"            i_info[\u0027kernel\u0027] \u003d info.get(\u0027kernel\u0027)"},{"line_number":865,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":866,"context_line":"        if boot_option !\u003d \u0027kickstart\u0027:"},{"line_number":867,"context_line":"            i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"    error_msg \u003d _(\"Cannot validate driver deploy. Some parameters were missing\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5c9d58d5_5b31d428","line":866,"updated":"2022-02-09 12:54:25.000000000","message":"This branch applies to partition images, are you use root_gb is not needed?","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1a831eb5132f5c6e1b9c508d0827b00b74a94ad","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                    i_info[\u0027image_source\u0027])):"},{"line_number":864,"context_line":"            i_info[\u0027kernel\u0027] \u003d info.get(\u0027kernel\u0027)"},{"line_number":865,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":866,"context_line":"        if boot_option !\u003d \u0027kickstart\u0027:"},{"line_number":867,"context_line":"            i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"    error_msg \u003d _(\"Cannot validate driver deploy. Some parameters were missing\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ab470899_6e7ad9ee","line":866,"in_reply_to":"36860b78_2d71dbb3","updated":"2022-02-28 04:19:18.000000000","message":"Lets remove this as suggested. I\u0027m keen to try kickstart files with and without disk partition instructions, so we can determine what is really required","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d93f8f28631b0db090f882547adccc7ff35b87","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                    i_info[\u0027image_source\u0027])):"},{"line_number":864,"context_line":"            i_info[\u0027kernel\u0027] \u003d info.get(\u0027kernel\u0027)"},{"line_number":865,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":866,"context_line":"        if boot_option !\u003d \u0027kickstart\u0027:"},{"line_number":867,"context_line":"            i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"    error_msg \u003d _(\"Cannot validate driver deploy. Some parameters were missing\""}],"source_content_type":"text/x-python","patch_set":4,"id":"36860b78_2d71dbb3","line":866,"in_reply_to":"5c9d58d5_5b31d428","updated":"2022-02-09 17:06:03.000000000","message":"That\u0027s a good question. We don\u0027t use root_gb and the redhat user said that this broke for them when they tried to use this patch. I don\u0027t know how others use the anaconda deploy interface. Our ks.cfg file has the \u0027instructions\u0027 on how to do the disk layout.\n\nHmm, I just looked at upstream email, I see that the redhat user is having issues regardless. Maybe it was a mistake to add this in (I thought I was helping but...) Should I go back to the previous version (w/o this change)?","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"501eff2ca32e574da5282e058f3a14575e6596de","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                    i_info[\u0027image_source\u0027])):"},{"line_number":864,"context_line":"            i_info[\u0027kernel\u0027] \u003d info.get(\u0027kernel\u0027)"},{"line_number":865,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":866,"context_line":"        if boot_option !\u003d \u0027kickstart\u0027:"},{"line_number":867,"context_line":"            i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"    error_msg \u003d _(\"Cannot validate driver deploy. Some parameters were missing\""}],"source_content_type":"text/x-python","patch_set":4,"id":"cb17048a_583e4e3d","line":866,"in_reply_to":"ab470899_6e7ad9ee","updated":"2022-02-28 16:39:53.000000000","message":"Yup, agreed. Reverted!","commit_id":"42e0bfb72c771871a4707600598646ce384029f0"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"803abdb6cfd0f1dfe115635d34e8c553ceed255e","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            manager_utils.node_power_action(task, states.POWER_ON)"},{"line_number":135,"context_line":"            task.process_event(\u0027done\u0027)"},{"line_number":136,"context_line":"        except Exception as e:"},{"line_number":137,"context_line":"            msg \u003d (_(\u0027Error rebooting node %(node)s after deploy. \u0027"},{"line_number":138,"context_line":"                     \u0027Error: %(error)s\u0027) %"},{"line_number":139,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":140,"context_line":"            agent_base.log_and_raise_deployment_error(task, msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"0dbd0584_0cc0b66c","line":137,"updated":"2022-03-03 10:47:27.000000000","message":"This could use updating, reboot is not the only thing this code does","commit_id":"06cc5d47dcdc49193e5e4e748471eb0b9ae97bbb"}],"releasenotes/notes/anaconda-deploy-more-fixes-58d996c7031c8c4b.yaml":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e5feae1e24577ab51c6d6dfdf54fffbb8751747f","unresolved":true,"context_lines":[{"line_number":18,"context_line":"    to be populated with the \u0027image_url\u0027; this is now populated"},{"line_number":19,"context_line":"    (via PXEAnacondaDeploy\u0027s prepare() method)."},{"line_number":20,"context_line":"  - |"},{"line_number":21,"context_line":"    For the anacaonda deploy interface, when the deploy was finished"},{"line_number":22,"context_line":"    and the bm node was being rebooted, the node\u0027s provision state was"},{"line_number":23,"context_line":"    incorrectly being set to \u0027active\u0027 -- the provisioning state-machine"},{"line_number":24,"context_line":"    mechanism now handles that."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"90490d53_b5823fcd","line":21,"range":{"start_line":21,"start_character":12,"end_line":21,"end_character":21},"updated":"2022-02-07 15:43:20.000000000","message":"nit: anaconda","commit_id":"4e6177fef78a9b73edc43950937286dd1de2fb21"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7a67d73e13d08df15ffa840f418acd1344c8f5fc","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    to be populated with the \u0027image_url\u0027; this is now populated"},{"line_number":19,"context_line":"    (via PXEAnacondaDeploy\u0027s prepare() method)."},{"line_number":20,"context_line":"  - |"},{"line_number":21,"context_line":"    For the anacaonda deploy interface, when the deploy was finished"},{"line_number":22,"context_line":"    and the bm node was being rebooted, the node\u0027s provision state was"},{"line_number":23,"context_line":"    incorrectly being set to \u0027active\u0027 -- the provisioning state-machine"},{"line_number":24,"context_line":"    mechanism now handles that."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"d1412631_a46bb307","line":21,"range":{"start_line":21,"start_character":12,"end_line":21,"end_character":21},"in_reply_to":"90490d53_b5823fcd","updated":"2022-02-07 20:23:58.000000000","message":"Done","commit_id":"4e6177fef78a9b73edc43950937286dd1de2fb21"}]}
