)]}'
{"ironic/conductor/steps.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \u0027raid\u0027: 1,"},{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"VERIFYING_INTERFACE_PRIORITY \u003d {"},{"line_number":54,"context_line":"    # When two clean steps have the same priority, their order is determined"},{"line_number":55,"context_line":"    # by which interface is implementing the clean step. The clean step of the"},{"line_number":56,"context_line":"    # interface with the highest value here, will be executed first in that"}],"source_content_type":"text/x-python","patch_set":6,"id":"78a4efc7_a51b4058","line":53,"updated":"2021-07-13 13:03:20.000000000","message":"This has to be all interfaces IMO, especially boot and inspect can benefit from adding here.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    \u0027raid\u0027: 1,"},{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"VERIFYING_INTERFACE_PRIORITY \u003d {"},{"line_number":54,"context_line":"    # When two clean steps have the same priority, their order is determined"},{"line_number":55,"context_line":"    # by which interface is implementing the clean step. The clean step of the"},{"line_number":56,"context_line":"    # interface with the highest value here, will be executed first in that"}],"source_content_type":"text/x-python","patch_set":6,"id":"e8ad9a32_3452688b","line":53,"in_reply_to":"78a4efc7_a51b4058","updated":"2021-07-14 00:06:59.000000000","message":"I added the other interfaces. I wasn\u0027t sure about relative priorities of the extra ones - let\u0027s discuss futher.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    driver_internal_info \u003d node.driver_internal_info"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    # Get the prioritized steps for automated cleaning"},{"line_number":296,"context_line":"    driver_internal_info[\u0027clean_steps\u0027] \u003d _get_verify_steps(task,"},{"line_number":297,"context_line":"                                                            enabled\u003dTrue)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    node.verify_step \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"822a3db3_1fd3bfcf","line":296,"updated":"2021-07-13 13:03:20.000000000","message":"Not clean_steps :) Actually, we don\u0027t need to store the steps on the Node, since steps cannot be asynchronous. Just return them.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    driver_internal_info \u003d node.driver_internal_info"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    # Get the prioritized steps for automated cleaning"},{"line_number":296,"context_line":"    driver_internal_info[\u0027clean_steps\u0027] \u003d _get_verify_steps(task,"},{"line_number":297,"context_line":"                                                            enabled\u003dTrue)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    node.verify_step \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"179a3430_77cdf3a2","line":296,"in_reply_to":"822a3db3_1fd3bfcf","updated":"2021-07-14 00:06:59.000000000","message":"Done.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"603cbbec53a8b3a6f11db6fba176e6695d63d59b","unresolved":true,"context_lines":[{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"VERIFYING_INTERFACE_PRIORITY \u003d {"},{"line_number":54,"context_line":"    # When two clean steps have the same priority, their order is determined"},{"line_number":55,"context_line":"    # by which interface is implementing the verify step. The verifying step of"},{"line_number":56,"context_line":"    # the interface with the highest value here, will be executed first in"},{"line_number":57,"context_line":"    # that case."}],"source_content_type":"text/x-python","patch_set":23,"id":"38fcf47f_3540062c","line":54,"range":{"start_line":54,"start_character":15,"end_line":54,"end_character":20},"updated":"2021-08-24 13:18:37.000000000","message":"nit: verify steps?","commit_id":"e4aac9371e234b8ba22978252a5587ae7a426bfa"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8c26ee477a12015fe2f6390da4d1a7345524b468","unresolved":false,"context_lines":[{"line_number":51,"context_line":"}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"VERIFYING_INTERFACE_PRIORITY \u003d {"},{"line_number":54,"context_line":"    # When two clean steps have the same priority, their order is determined"},{"line_number":55,"context_line":"    # by which interface is implementing the verify step. The verifying step of"},{"line_number":56,"context_line":"    # the interface with the highest value here, will be executed first in"},{"line_number":57,"context_line":"    # that case."}],"source_content_type":"text/x-python","patch_set":23,"id":"2f51d2bd_066f2e6a","line":54,"range":{"start_line":54,"start_character":15,"end_line":54,"end_character":20},"in_reply_to":"38fcf47f_3540062c","updated":"2021-08-27 06:04:09.000000000","message":"Done","commit_id":"e4aac9371e234b8ba22978252a5587ae7a426bfa"}],"ironic/conductor/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":560,"context_line":"    # info.pop(\u0027cleaning_reboot\u0027, None)"},{"line_number":561,"context_line":"    # info.pop(\u0027cleaning_polling\u0027, None)"},{"line_number":562,"context_line":"    # info.pop(\u0027cleaning_disable_ramdisk\u0027, None)"},{"line_number":563,"context_line":"    # NOTE(janders) do we need any of those for verify steps?"},{"line_number":564,"context_line":"    # info.pop(\u0027skip_current_clean_step\u0027, None)"},{"line_number":565,"context_line":"    # info.pop(\u0027steps_validated\u0027, None)"},{"line_number":566,"context_line":"    task.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":6,"id":"339afecd_ca6019b2","line":563,"updated":"2021-07-13 13:03:20.000000000","message":"Nothing in this function is required for verify steps.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":false,"context_lines":[{"line_number":560,"context_line":"    # info.pop(\u0027cleaning_reboot\u0027, None)"},{"line_number":561,"context_line":"    # info.pop(\u0027cleaning_polling\u0027, None)"},{"line_number":562,"context_line":"    # info.pop(\u0027cleaning_disable_ramdisk\u0027, None)"},{"line_number":563,"context_line":"    # NOTE(janders) do we need any of those for verify steps?"},{"line_number":564,"context_line":"    # info.pop(\u0027skip_current_clean_step\u0027, None)"},{"line_number":565,"context_line":"    # info.pop(\u0027steps_validated\u0027, None)"},{"line_number":566,"context_line":"    task.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":6,"id":"c0127b92_c640b2cf","line":563,"in_reply_to":"339afecd_ca6019b2","updated":"2021-07-14 00:06:59.000000000","message":"I removed this function entirely.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"8f6fec627fdd2f8559e3feb8ddcfb597ecce93f1","unresolved":true,"context_lines":[{"line_number":643,"context_line":"    errmsg \u003d errmsg or logmsg"},{"line_number":644,"context_line":"    node \u003d task.node"},{"line_number":645,"context_line":"    LOG.error(logmsg, exc_info\u003dtraceback)"},{"line_number":646,"context_line":"    node.last_error \u003d errmsg"},{"line_number":647,"context_line":"    node.save()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    node.refresh()"}],"source_content_type":"text/x-python","patch_set":37,"id":"51cb1a76_79514e45","line":646,"range":{"start_line":646,"start_character":4,"end_line":646,"end_character":28},"updated":"2021-09-29 17:39:35.000000000","message":"this would make sense before we added the support for node history record,\nnow you should use\nthe function node_history_record it will probably look like https://paste.opendev.org/show/809679/","commit_id":"0af6bcd65da638f05c3406ba9bce9742dfccd428"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"cd0186076583696cea5292b0cff6fd2be118fe0e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    errmsg \u003d errmsg or logmsg"},{"line_number":644,"context_line":"    node \u003d task.node"},{"line_number":645,"context_line":"    LOG.error(logmsg, exc_info\u003dtraceback)"},{"line_number":646,"context_line":"    node.last_error \u003d errmsg"},{"line_number":647,"context_line":"    node.save()"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    node.refresh()"}],"source_content_type":"text/x-python","patch_set":37,"id":"c2913234_8020cb9b","line":646,"range":{"start_line":646,"start_character":4,"end_line":646,"end_character":28},"in_reply_to":"51cb1a76_79514e45","updated":"2021-09-30 10:48:29.000000000","message":"Done","commit_id":"0af6bcd65da638f05c3406ba9bce9742dfccd428"}],"ironic/conductor/verify.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if step_index is None:"},{"line_number":92,"context_line":"            return  # short-circuit to the end"},{"line_number":93,"context_line":"        idx \u003d step_index"},{"line_number":94,"context_line":"        # The list can change in-flight, do not cache it!"},{"line_number":95,"context_line":"        while idx \u003c len(node.driver_internal_info[\u0027verify_steps\u0027]):"},{"line_number":96,"context_line":"            yield idx, node.driver_internal_info[\u0027verify_steps\u0027][idx]"},{"line_number":97,"context_line":"            idx +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fb6824b_f012ab18","line":94,"updated":"2021-07-13 13:03:20.000000000","message":"All this logic is because new steps can appear as a result of async actions. We don\u0027t need it here, we can just iterate over steps normally.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"ceba5f8e078314397227fcfcc7c60a11e876f0a3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if step_index is None:"},{"line_number":92,"context_line":"            return  # short-circuit to the end"},{"line_number":93,"context_line":"        idx \u003d step_index"},{"line_number":94,"context_line":"        # The list can change in-flight, do not cache it!"},{"line_number":95,"context_line":"        while idx \u003c len(node.driver_internal_info[\u0027verify_steps\u0027]):"},{"line_number":96,"context_line":"            yield idx, node.driver_internal_info[\u0027verify_steps\u0027][idx]"},{"line_number":97,"context_line":"            idx +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"8785a13a_2d3d4291","line":94,"in_reply_to":"3fb6824b_f012ab18","updated":"2021-07-15 02:07:57.000000000","message":"Thank you Dmitry. I removed the do_next_verify_step function entirely as it was mostly dealing with async steps and incorporated iterating over verify steps into do_node_verify.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # if necessary"},{"line_number":108,"context_line":"        node.verify_step \u003d step"},{"line_number":109,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":110,"context_line":"        driver_internal_info[\u0027verify_step_index\u0027] \u003d idx"},{"line_number":111,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":112,"context_line":"        node.save()"},{"line_number":113,"context_line":"        interface \u003d getattr(task.driver, step.get(\u0027interface\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"857a1a00_a3ddd0df","line":110,"updated":"2021-07-13 13:03:20.000000000","message":"This is also only needed for async steps.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"cb62f327981ee73d6fcdd897caee2c410e8a908d","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            old_power_state \u003d node.power_state"},{"line_number":63,"context_line":"            node.power_state \u003d power_state"},{"line_number":64,"context_line":"            node \u003d task.node"},{"line_number":65,"context_line":"            verify_steps \u003d conductor_steps._get_verify_steps(task,"},{"line_number":66,"context_line":"                                                             enabled\u003dTrue,"},{"line_number":67,"context_line":"                                                             sort\u003dTrue)"},{"line_number":68,"context_line":"            for step in verify_steps:"}],"source_content_type":"text/x-python","patch_set":32,"id":"b4229cad_b51abdc0","line":65,"updated":"2021-09-02 09:24:40.000000000","message":"we will only run the verify steps if the power state is different?","commit_id":"380bd17fe3171bc24db06367528445c7e8279572"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"cb62f327981ee73d6fcdd897caee2c410e8a908d","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                        task, log_msg,"},{"line_number":81,"context_line":"                        _(\"Failed to verify. Exception: %s\") % e,"},{"line_number":82,"context_line":"                        traceback\u003dTrue)"},{"line_number":83,"context_line":"                    return"},{"line_number":84,"context_line":"                if result is not None:"},{"line_number":85,"context_line":"                    # NOTE(rloo): This is an internal/dev error; shouldn\u0027t"},{"line_number":86,"context_line":"                    # happen."}],"source_content_type":"text/x-python","patch_set":32,"id":"f732502a_5992ec3f","line":83,"range":{"start_line":83,"start_character":20,"end_line":83,"end_character":26},"updated":"2021-09-02 09:24:40.000000000","message":"If we add a return here we won\u0027t send the process_event for fail","commit_id":"380bd17fe3171bc24db06367528445c7e8279572"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"cb62f327981ee73d6fcdd897caee2c410e8a908d","unresolved":true,"context_lines":[{"line_number":92,"context_line":"                    utils.verifying_error_handler("},{"line_number":93,"context_line":"                        task, log_msg,"},{"line_number":94,"context_line":"                        _(\"Failed to verify: %s\") % node.deploy_step)"},{"line_number":95,"context_line":"                    return"},{"line_number":96,"context_line":"            LOG.info(\u0027Successfully verified node %(node)s\u0027,"},{"line_number":97,"context_line":"                     {\u0027node\u0027: node.uuid})"},{"line_number":98,"context_line":"            task.process_event(\u0027done\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"4380e92e_0296a83c","line":95,"updated":"2021-09-02 09:24:40.000000000","message":"ditto","commit_id":"380bd17fe3171bc24db06367528445c7e8279572"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b45c85b2db79cf5e6063191f36d95229226fddbe","unresolved":true,"context_lines":[{"line_number":51,"context_line":"            log_traceback \u003d not isinstance(e, exception.IronicException)"},{"line_number":52,"context_line":"            LOG.error(error, exc_info\u003dlog_traceback)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    node \u003d task.node"},{"line_number":55,"context_line":"    verify_steps \u003d conductor_steps._get_verify_steps(task,"},{"line_number":56,"context_line":"                                                     enabled\u003dTrue,"},{"line_number":57,"context_line":"                                                     sort\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":34,"id":"709786af_e31fd4d4","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":20},"updated":"2021-09-22 07:38:54.000000000","message":"in L31 you already have the node","commit_id":"1ec2003a7e4e88311664f8d8fe8e069ebf5a2a90"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"ea4b7192a41585140338c5ad339975a019effc85","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            log_traceback \u003d not isinstance(e, exception.IronicException)"},{"line_number":52,"context_line":"            LOG.error(error, exc_info\u003dlog_traceback)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    node \u003d task.node"},{"line_number":55,"context_line":"    verify_steps \u003d conductor_steps._get_verify_steps(task,"},{"line_number":56,"context_line":"                                                     enabled\u003dTrue,"},{"line_number":57,"context_line":"                                                     sort\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":34,"id":"15764c45_c9871fc1","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":20},"in_reply_to":"709786af_e31fd4d4","updated":"2021-09-22 07:48:20.000000000","message":"Well spotted, thank you Iury.","commit_id":"1ec2003a7e4e88311664f8d8fe8e069ebf5a2a90"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0b72e6079b2f517af198a1c590fc7b6b00564550","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                      \u0027err\u0027: e})"},{"line_number":68,"context_line":"            utils.verifying_error_handler("},{"line_number":69,"context_line":"                task, error,"},{"line_number":70,"context_line":"                _(\"Failed to verify. Exception: %s\") % e,"},{"line_number":71,"context_line":"                traceback\u003dTrue)"},{"line_number":72,"context_line":"        if result is not None:"},{"line_number":73,"context_line":"            # NOTE(rloo): This is an internal/dev error; shouldn\u0027t"}],"source_content_type":"text/x-python","patch_set":38,"id":"eaba5edd_cba939a0","line":70,"updated":"2021-10-06 09:27:02.000000000","message":"Let\u0027s shorten. \"Failed to verify: %s\"","commit_id":"b385d9ae5bda45d683e51d0140be7c0b2c1d6aca"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"3020194a67552d5fa06a88ce2067b8b1fe1057c5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                      \u0027err\u0027: e})"},{"line_number":68,"context_line":"            utils.verifying_error_handler("},{"line_number":69,"context_line":"                task, error,"},{"line_number":70,"context_line":"                _(\"Failed to verify. Exception: %s\") % e,"},{"line_number":71,"context_line":"                traceback\u003dTrue)"},{"line_number":72,"context_line":"        if result is not None:"},{"line_number":73,"context_line":"            # NOTE(rloo): This is an internal/dev error; shouldn\u0027t"}],"source_content_type":"text/x-python","patch_set":38,"id":"a4095cac_16baa02f","line":70,"in_reply_to":"eaba5edd_cba939a0","updated":"2021-10-07 04:39:49.000000000","message":"Done.","commit_id":"b385d9ae5bda45d683e51d0140be7c0b2c1d6aca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0b72e6079b2f517af198a1c590fc7b6b00564550","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                task, error,"},{"line_number":70,"context_line":"                _(\"Failed to verify. Exception: %s\") % e,"},{"line_number":71,"context_line":"                traceback\u003dTrue)"},{"line_number":72,"context_line":"        if result is not None:"},{"line_number":73,"context_line":"            # NOTE(rloo): This is an internal/dev error; shouldn\u0027t"},{"line_number":74,"context_line":"            # happen."},{"line_number":75,"context_line":"            error \u003d (_(\u0027While executing verify step %(step)s on \u0027"}],"source_content_type":"text/x-python","patch_set":38,"id":"4047e5a6_2dbb8374","line":72,"updated":"2021-10-06 09:27:02.000000000","message":"I don\u0027t think we need this, it was for transitional period in cleaning/deploying","commit_id":"b385d9ae5bda45d683e51d0140be7c0b2c1d6aca"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"3020194a67552d5fa06a88ce2067b8b1fe1057c5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                task, error,"},{"line_number":70,"context_line":"                _(\"Failed to verify. Exception: %s\") % e,"},{"line_number":71,"context_line":"                traceback\u003dTrue)"},{"line_number":72,"context_line":"        if result is not None:"},{"line_number":73,"context_line":"            # NOTE(rloo): This is an internal/dev error; shouldn\u0027t"},{"line_number":74,"context_line":"            # happen."},{"line_number":75,"context_line":"            error \u003d (_(\u0027While executing verify step %(step)s on \u0027"}],"source_content_type":"text/x-python","patch_set":38,"id":"32e03e50_6edbc000","line":72,"in_reply_to":"4047e5a6_2dbb8374","updated":"2021-10-07 04:39:49.000000000","message":"Done.","commit_id":"b385d9ae5bda45d683e51d0140be7c0b2c1d6aca"}],"ironic/conf/conductor.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                        \u0027will not run during cleaning. If unset for an \u0027"},{"line_number":284,"context_line":"                        \u0027inband clean step, will use the priority set in the \u0027"},{"line_number":285,"context_line":"                        \u0027ramdisk.\u0027)),"},{"line_number":286,"context_line":"    cfg.BoolOpt(\u0027enable_verify_steps\u0027,"},{"line_number":287,"context_line":"                default\u003dFalse,"},{"line_number":288,"context_line":"                mutable\u003dTrue,"},{"line_number":289,"context_line":"                help\u003d_(\u0027Enables or disables verify steps. Verify steps are \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"b6b02ea7_1124806b","line":286,"updated":"2021-07-13 13:03:20.000000000","message":"Do we really need the ability to disable verify steps? An operator can just set all priorities to 0.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                        \u0027will not run during cleaning. If unset for an \u0027"},{"line_number":284,"context_line":"                        \u0027inband clean step, will use the priority set in the \u0027"},{"line_number":285,"context_line":"                        \u0027ramdisk.\u0027)),"},{"line_number":286,"context_line":"    cfg.BoolOpt(\u0027enable_verify_steps\u0027,"},{"line_number":287,"context_line":"                default\u003dFalse,"},{"line_number":288,"context_line":"                mutable\u003dTrue,"},{"line_number":289,"context_line":"                help\u003d_(\u0027Enables or disables verify steps. Verify steps are \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9422b255_03a8f342","line":286,"in_reply_to":"b6b02ea7_1124806b","updated":"2021-07-14 00:06:59.000000000","message":"Good point. I removed this config option.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    cfg.MultiOpt(\u0027verify_step_priority_override\u0027,"},{"line_number":297,"context_line":"                 item_type\u003dtypes.Dict(),"},{"line_number":298,"context_line":"                 default\u003d{},"},{"line_number":299,"context_line":"                 help\u003d_(\u0027Priority to run automated verify steps \u0027"},{"line_number":300,"context_line":"                        \u0027provided in interface.step_name:priority format,\u0027"},{"line_number":301,"context_line":"                        \u0027e.g. management.clear_job_queue:123. The option can \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"89338ded_ac86d5ef","line":298,"updated":"2021-07-13 13:03:20.000000000","message":"mutable\u003dTrue I think","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    cfg.MultiOpt(\u0027verify_step_priority_override\u0027,"},{"line_number":297,"context_line":"                 item_type\u003dtypes.Dict(),"},{"line_number":298,"context_line":"                 default\u003d{},"},{"line_number":299,"context_line":"                 help\u003d_(\u0027Priority to run automated verify steps \u0027"},{"line_number":300,"context_line":"                        \u0027provided in interface.step_name:priority format,\u0027"},{"line_number":301,"context_line":"                        \u0027e.g. management.clear_job_queue:123. The option can \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"51df0bc8_d6a8ebb2","line":298,"in_reply_to":"89338ded_ac86d5ef","updated":"2021-07-14 00:06:59.000000000","message":"Done.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0b72e6079b2f517af198a1c590fc7b6b00564550","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                        \u0027e.g. management.clear_job_queue:123. The option can \u0027"},{"line_number":344,"context_line":"                        \u0027be specified multiple times to define priorities \u0027"},{"line_number":345,"context_line":"                        \u0027for multiple steps. If set to 0, this specific step \u0027"},{"line_number":346,"context_line":"                        \u0027will not run during cleaning. \u0027)),"},{"line_number":347,"context_line":"]"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"5ddf101b_a28103fb","line":346,"updated":"2021-10-06 09:27:02.000000000","message":"\"verification\"","commit_id":"b385d9ae5bda45d683e51d0140be7c0b2c1d6aca"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"3020194a67552d5fa06a88ce2067b8b1fe1057c5","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                        \u0027e.g. management.clear_job_queue:123. The option can \u0027"},{"line_number":344,"context_line":"                        \u0027be specified multiple times to define priorities \u0027"},{"line_number":345,"context_line":"                        \u0027for multiple steps. If set to 0, this specific step \u0027"},{"line_number":346,"context_line":"                        \u0027will not run during cleaning. \u0027)),"},{"line_number":347,"context_line":"]"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"33c97a65_979be416","line":346,"in_reply_to":"5ddf101b_a28103fb","updated":"2021-10-07 04:39:49.000000000","message":"Doh! Done. Good pickup Dmitry.","commit_id":"b385d9ae5bda45d683e51d0140be7c0b2c1d6aca"}],"ironic/drivers/base.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        A verify step must take a single positional argument: a TaskManager"},{"line_number":398,"context_line":"        object. It does not take keyword variable arguments."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        A step can only be executed synchronously. A step should return None"},{"line_number":401,"context_line":"        when the method has completed."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        :param task: A TaskManager object"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa3d450_cdca17f0","line":400,"updated":"2021-07-13 13:03:20.000000000","message":"Does not apply here.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        A verify step must take a single positional argument: a TaskManager"},{"line_number":398,"context_line":"        object. It does not take keyword variable arguments."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        A step can only be executed synchronously. A step should return None"},{"line_number":401,"context_line":"        when the method has completed."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        :param task: A TaskManager object"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba36e74d_f230df37","line":400,"in_reply_to":"3fa3d450_cdca17f0","updated":"2021-07-14 00:06:59.000000000","message":"Done.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3250ba21627beeba9c896b6594a11efb88dd25ca","unresolved":false,"context_lines":[{"line_number":1917,"context_line":"    return decorator"},{"line_number":1918,"context_line":""},{"line_number":1919,"context_line":""},{"line_number":1920,"context_line":"def verify_step(priority, argsinfo\u003dNone):"},{"line_number":1921,"context_line":"    \"\"\"Decorator for verify steps."},{"line_number":1922,"context_line":""},{"line_number":1923,"context_line":"    Only steps with priorities greater than 0 are used. These steps are"}],"source_content_type":"text/x-python","patch_set":6,"id":"8c58e34b_dee76d7a","line":1920,"updated":"2021-07-13 13:03:20.000000000","message":"Arguments are not supported","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"8a497140dd6252199e4c62544da2871e8ae7d0c8","unresolved":false,"context_lines":[{"line_number":1917,"context_line":"    return decorator"},{"line_number":1918,"context_line":""},{"line_number":1919,"context_line":""},{"line_number":1920,"context_line":"def verify_step(priority, argsinfo\u003dNone):"},{"line_number":1921,"context_line":"    \"\"\"Decorator for verify steps."},{"line_number":1922,"context_line":""},{"line_number":1923,"context_line":"    Only steps with priorities greater than 0 are used. These steps are"}],"source_content_type":"text/x-python","patch_set":6,"id":"eb783e29_942acb7d","line":1920,"in_reply_to":"8c58e34b_dee76d7a","updated":"2021-07-14 00:06:59.000000000","message":"Done.","commit_id":"561d27ed70a94bc3d8a7d36b516d8b44be3e11db"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"8f6fec627fdd2f8559e3feb8ddcfb597ecce93f1","unresolved":true,"context_lines":[{"line_number":261,"context_line":"            if getattr(method, \u0027_is_verify_step\u0027, False):"},{"line_number":262,"context_line":"                # Create a VerifyStep to represent this method"},{"line_number":263,"context_line":"                step \u003d {\u0027step\u0027: method.__name__,"},{"line_number":264,"context_line":"                        \u0027priority\u0027: method._verify_step_priority,"},{"line_number":265,"context_line":"                        \u0027interface\u0027: instance.interface_type}"},{"line_number":266,"context_line":"                instance.verify_steps.append(step)"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"c4bca6e4_a9ad6697","line":264,"updated":"2021-09-29 17:39:35.000000000","message":"I\u0027m wondering if we need to accept args for the verify_steps also, maybe Dmitry will have more insights regarding this.","commit_id":"0af6bcd65da638f05c3406ba9bce9742dfccd428"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"cd0186076583696cea5292b0cff6fd2be118fe0e","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            if getattr(method, \u0027_is_verify_step\u0027, False):"},{"line_number":262,"context_line":"                # Create a VerifyStep to represent this method"},{"line_number":263,"context_line":"                step \u003d {\u0027step\u0027: method.__name__,"},{"line_number":264,"context_line":"                        \u0027priority\u0027: method._verify_step_priority,"},{"line_number":265,"context_line":"                        \u0027interface\u0027: instance.interface_type}"},{"line_number":266,"context_line":"                instance.verify_steps.append(step)"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"95492acd_ac46eca0","line":264,"in_reply_to":"c4bca6e4_a9ad6697","updated":"2021-09-30 10:48:29.000000000","message":"Thank you for your comment Iury. As per our IRC conversation with Dmitry I belive this should be okay.","commit_id":"0af6bcd65da638f05c3406ba9bce9742dfccd428"}]}
