)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"fd228197fc55e679b3387260d4de41e37f74e631","unresolved":true,"context_lines":[{"line_number":17,"context_line":"NetworkAdapters resources before considering the firmware update"},{"line_number":18,"context_line":"complete. This ensures the BMC has fully stabilized before proceeding."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Generated-By: Claude Code Sonnet 4"},{"line_number":21,"context_line":"Change-Id: I5cb72f62d3fc62c3ad750c62924842cef59e79b8"},{"line_number":22,"context_line":"Signed-off-by: Jacob Anders \u003cjanders@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"2a751de4_52c294e0","line":20,"updated":"2025-10-23 15:47:48.000000000","message":"nit: this should be \"Assisted-By\"","commit_id":"85ec9d655f7e8ade0a611ceb8d202c841123f05c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4b827e74_97e1d1c0","updated":"2025-09-30 16:25:07.000000000","message":"Hardware is hard, isn\u0027t it? :( Anyway, a few comments inline. Overall looks good.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"5f2d6b5c_4068a63f","in_reply_to":"4b827e74_97e1d1c0","updated":"2025-10-02 12:46:19.000000000","message":"Thank you for your review Dmitry","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"e6f2893d_dad6596c","updated":"2025-10-02 12:46:19.000000000","message":"Thank you for your review Dmitry. Hardware is hard, indeed 😞","commit_id":"288bdffb379cee96bba35cb0b503dc3b5787e72a"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"bc9c4b709a47502fa8bf676808035a209757e78d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"56e5e189_75dbad85","updated":"2025-10-03 10:00:53.000000000","message":"Thank you for your reviews Dmitry and Jay. Uploaded revised version.","commit_id":"85ec9d655f7e8ade0a611ceb8d202c841123f05c"}],"ironic/conductor/servicing.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":264,"context_line":"            return utils.servicing_error_handler(task, msg,"},{"line_number":265,"context_line":"                                                 traceback\u003dTrue,"},{"line_number":266,"context_line":"                                                 tear_down_service\u003dFalse)"},{"line_number":267,"context_line":"    utils.node_update_cache(task)"},{"line_number":268,"context_line":"    LOG.info(\u0027Node %s service complete.\u0027, task.node.uuid)"},{"line_number":269,"context_line":"    task.process_event(\u0027done\u0027)"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"75796536_c0e50fc2","side":"PARENT","line":267,"updated":"2025-09-30 16:25:07.000000000","message":"Is this here because of the NetworkAdapters issue? This change impacts potentially more than just Redfish\u0027s firmware upgrade, I\u0027d prefer to move it to the other patch if it\u0027s necessary at all (maybe not? if the NIC call won\u0027t fail any more)","commit_id":"7681e2216de0c92e4a857773263f19396016be20"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            return utils.servicing_error_handler(task, msg,"},{"line_number":265,"context_line":"                                                 traceback\u003dTrue,"},{"line_number":266,"context_line":"                                                 tear_down_service\u003dFalse)"},{"line_number":267,"context_line":"    utils.node_update_cache(task)"},{"line_number":268,"context_line":"    LOG.info(\u0027Node %s service complete.\u0027, task.node.uuid)"},{"line_number":269,"context_line":"    task.process_event(\u0027done\u0027)"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"6b995de2_a6b444cd","side":"PARENT","line":267,"in_reply_to":"75796536_c0e50fc2","updated":"2025-10-02 12:46:19.000000000","message":"100% agreed, this is leftover from the other patch, I will remove this.","commit_id":"7681e2216de0c92e4a857773263f19396016be20"}],"ironic/conf/redfish.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":96,"context_line":"               help\u003d_(\u0027Number of seconds to wait before proceeding with the \u0027"},{"line_number":97,"context_line":"                      \u0027reboot to finish the BMC firmware update step\u0027)),"},{"line_number":98,"context_line":"    cfg.IntOpt(\u0027firmware_update_required_successes\u0027,"},{"line_number":99,"context_line":"               min\u003d1,"},{"line_number":100,"context_line":"               default\u003d3,"},{"line_number":101,"context_line":"               help\u003d_(\u0027Number of successful responses required to \u0027"},{"line_number":102,"context_line":"                      \u0027consider post-upgrade BMC validation a success\u0027)),"}],"source_content_type":"text/x-python","patch_set":16,"id":"6a40551c_a4311bd8","line":99,"updated":"2025-09-30 16:25:07.000000000","message":"Do you want to allow opting out of this feature by setting this value to 0?","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":96,"context_line":"               help\u003d_(\u0027Number of seconds to wait before proceeding with the \u0027"},{"line_number":97,"context_line":"                      \u0027reboot to finish the BMC firmware update step\u0027)),"},{"line_number":98,"context_line":"    cfg.IntOpt(\u0027firmware_update_required_successes\u0027,"},{"line_number":99,"context_line":"               min\u003d1,"},{"line_number":100,"context_line":"               default\u003d3,"},{"line_number":101,"context_line":"               help\u003d_(\u0027Number of successful responses required to \u0027"},{"line_number":102,"context_line":"                      \u0027consider post-upgrade BMC validation a success\u0027)),"}],"source_content_type":"text/x-python","patch_set":16,"id":"d42b9108_1d0ddfdb","line":99,"in_reply_to":"6a40551c_a4311bd8","updated":"2025-10-02 12:46:19.000000000","message":"this is a great suggestion, thank you","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":105,"context_line":"               default\u003d300,"},{"line_number":106,"context_line":"               help\u003d_(\u0027Timeout (in seconds) to wait for firmware update task \u0027"},{"line_number":107,"context_line":"                      \u0027to complete. If the timeout is reached, the firmware \u0027"},{"line_number":108,"context_line":"                      \u0027update will be considered failed.\u0027)),"},{"line_number":109,"context_line":"    cfg.IntOpt(\u0027firmware_update_validation_interval\u0027,"},{"line_number":110,"context_line":"               min\u003d0,"},{"line_number":111,"context_line":"               default\u003d30,"}],"source_content_type":"text/x-python","patch_set":16,"id":"f4310219_ca65f4d2","line":108,"updated":"2025-09-30 16:25:07.000000000","message":"Please mention what setting this value to 0 does.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"               default\u003d300,"},{"line_number":106,"context_line":"               help\u003d_(\u0027Timeout (in seconds) to wait for firmware update task \u0027"},{"line_number":107,"context_line":"                      \u0027to complete. If the timeout is reached, the firmware \u0027"},{"line_number":108,"context_line":"                      \u0027update will be considered failed.\u0027)),"},{"line_number":109,"context_line":"    cfg.IntOpt(\u0027firmware_update_validation_interval\u0027,"},{"line_number":110,"context_line":"               min\u003d0,"},{"line_number":111,"context_line":"               default\u003d30,"}],"source_content_type":"text/x-python","patch_set":16,"id":"6b9e5d43_d25264c7","line":108,"in_reply_to":"f4310219_ca65f4d2","updated":"2025-10-02 12:46:19.000000000","message":"This option is no longer used, removing.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":112,"context_line":"               help\u003d_(\u0027Timeout (in seconds) to wait between validation \u0027"},{"line_number":113,"context_line":"                      \u0027attempts.\u0027)),"},{"line_number":114,"context_line":"    cfg.IntOpt(\u0027firmware_update_resource_validation_timeout\u0027,"},{"line_number":115,"context_line":"               min\u003d0,"},{"line_number":116,"context_line":"               default\u003d300,"},{"line_number":117,"context_line":"               help\u003d_(\u0027Timeout (in seconds) to wait for BMC resources \u0027"},{"line_number":118,"context_line":"                      \u0027(System, Manager, NetworkAdapters) to become stable \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"aafaa81e_ecf8fb18","line":115,"updated":"2025-09-30 16:25:07.000000000","message":"Same re 0","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":112,"context_line":"               help\u003d_(\u0027Timeout (in seconds) to wait between validation \u0027"},{"line_number":113,"context_line":"                      \u0027attempts.\u0027)),"},{"line_number":114,"context_line":"    cfg.IntOpt(\u0027firmware_update_resource_validation_timeout\u0027,"},{"line_number":115,"context_line":"               min\u003d0,"},{"line_number":116,"context_line":"               default\u003d300,"},{"line_number":117,"context_line":"               help\u003d_(\u0027Timeout (in seconds) to wait for BMC resources \u0027"},{"line_number":118,"context_line":"                      \u0027(System, Manager, NetworkAdapters) to become stable \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"4c32afe0_ae572170","line":115,"in_reply_to":"aafaa81e_ecf8fb18","updated":"2025-10-02 12:46:19.000000000","message":"Done","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"}],"ironic/drivers/modules/redfish/firmware.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        start_time \u003d time.time()"},{"line_number":320,"context_line":"        consecutive_successes \u003d 0"},{"line_number":321,"context_line":"        required_successes \u003d CONF.redfish.firmware_update_required_successes"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":324,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"37b24e0a_77bb8efd","line":321,"updated":"2025-09-30 16:25:07.000000000","message":"nit: it\u0027s a bit odd that one configuration value is passed as a parameter to the function and the other is read directly","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        start_time \u003d time.time()"},{"line_number":320,"context_line":"        consecutive_successes \u003d 0"},{"line_number":321,"context_line":"        required_successes \u003d CONF.redfish.firmware_update_required_successes"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":324,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"47dbcf04_4f0f4def","line":321,"in_reply_to":"37b24e0a_77bb8efd","updated":"2025-10-02 12:46:19.000000000","message":"Agreed.. My over-reliance on Claude shows.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":320,"context_line":"        consecutive_successes \u003d 0"},{"line_number":321,"context_line":"        required_successes \u003d CONF.redfish.firmware_update_required_successes"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                # Test System resource"},{"line_number":326,"context_line":"                system \u003d redfish_utils.get_system(node)"}],"source_content_type":"text/x-python","patch_set":16,"id":"398135ca_0fcec3da","line":323,"updated":"2025-09-30 16:25:07.000000000","message":"nit: you could calculate `start_time + timeout` once","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        consecutive_successes \u003d 0"},{"line_number":321,"context_line":"        required_successes \u003d CONF.redfish.firmware_update_required_successes"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                # Test System resource"},{"line_number":326,"context_line":"                system \u003d redfish_utils.get_system(node)"}],"source_content_type":"text/x-python","patch_set":16,"id":"87233c40_98c7bb5b","line":323,"in_reply_to":"398135ca_0fcec3da","updated":"2025-10-02 12:46:19.000000000","message":"Good pickup, thank you.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                # Test System resource"},{"line_number":326,"context_line":"                system \u003d redfish_utils.get_system(node)"},{"line_number":327,"context_line":"                LOG.debug(\u0027System resource OK for node %(node)s\u0027,"},{"line_number":328,"context_line":"                          {\u0027node\u0027: node.uuid})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"                # Test Manager resource"}],"source_content_type":"text/x-python","patch_set":16,"id":"7cbdad1b_9b8576b2","line":327,"updated":"2025-09-30 16:25:07.000000000","message":"nit: I\u0027m not sure these debug calls are useful","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"bd5b7963cd770cec393fd3444cd808dbf168aac7","unresolved":true,"context_lines":[{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                # Test System resource"},{"line_number":326,"context_line":"                system \u003d redfish_utils.get_system(node)"},{"line_number":327,"context_line":"                LOG.debug(\u0027System resource OK for node %(node)s\u0027,"},{"line_number":328,"context_line":"                          {\u0027node\u0027: node.uuid})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"                # Test Manager resource"}],"source_content_type":"text/x-python","patch_set":16,"id":"5d3f7cea_26dd7e90","line":327,"in_reply_to":"5a432944_2ed0040c","updated":"2025-10-02 19:40:18.000000000","message":"Yeah I think this is going to make debug mode impossible for someone to enable in a semi-production environment, we should not log quote so loudly. I suspect if we find these messages are useful, it implies we may have improvements to make in the error messages.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"bc9c4b709a47502fa8bf676808035a209757e78d","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                # Test System resource"},{"line_number":326,"context_line":"                system \u003d redfish_utils.get_system(node)"},{"line_number":327,"context_line":"                LOG.debug(\u0027System resource OK for node %(node)s\u0027,"},{"line_number":328,"context_line":"                          {\u0027node\u0027: node.uuid})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"                # Test Manager resource"}],"source_content_type":"text/x-python","patch_set":16,"id":"4df4c76a_3b2efaf1","line":327,"in_reply_to":"5d3f7cea_26dd7e90","updated":"2025-10-03 10:00:53.000000000","message":"removed the debug-level messages on successful checks.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":true,"context_lines":[{"line_number":324,"context_line":"            try:"},{"line_number":325,"context_line":"                # Test System resource"},{"line_number":326,"context_line":"                system \u003d redfish_utils.get_system(node)"},{"line_number":327,"context_line":"                LOG.debug(\u0027System resource OK for node %(node)s\u0027,"},{"line_number":328,"context_line":"                          {\u0027node\u0027: node.uuid})"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"                # Test Manager resource"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a432944_2ed0040c","line":327,"in_reply_to":"7cbdad1b_9b8576b2","updated":"2025-10-02 12:46:19.000000000","message":"I find them helpful while investigating the problematic HP machine. But it is fair to say that I could work backwards from failure messages. If it\u0027s a concern happy to remove this.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":347,"context_line":"                           \u0027node\u0027: node.uuid})"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"                if consecutive_successes \u003e\u003d required_successes:"},{"line_number":350,"context_line":"                    LOG.info(\u0027All resources stable and available for \u0027"},{"line_number":351,"context_line":"                             \u0027node %(node)s\u0027, {\u0027node\u0027: node.uuid})"},{"line_number":352,"context_line":"                    return"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"94b1e530_70339dc9","line":350,"updated":"2025-09-30 16:25:07.000000000","message":"nit: \"Redfish resources\"","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                           \u0027node\u0027: node.uuid})"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"                if consecutive_successes \u003e\u003d required_successes:"},{"line_number":350,"context_line":"                    LOG.info(\u0027All resources stable and available for \u0027"},{"line_number":351,"context_line":"                             \u0027node %(node)s\u0027, {\u0027node\u0027: node.uuid})"},{"line_number":352,"context_line":"                    return"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"4fdb6630_0c9afd5d","line":350,"in_reply_to":"94b1e530_70339dc9","updated":"2025-10-02 12:46:19.000000000","message":"Done","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        # Timeout reached without achieving stability"},{"line_number":369,"context_line":"        error_msg \u003d _(\u0027BMC resources failed to stabilize within \u0027"},{"line_number":370,"context_line":"                      \u0027%(timeout)s seconds for node %(node)s\u0027) % {"},{"line_number":371,"context_line":"            \u0027timeout\u0027: timeout, \u0027node\u0027: node.uuid}"},{"line_number":372,"context_line":"        LOG.error(error_msg)"},{"line_number":373,"context_line":"        raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"b1859682_c8ae033a","line":370,"updated":"2025-09-30 16:25:07.000000000","message":"Let\u0027s keep the last exception (I think it will still be available as \"e\" but maybe we need a new variable for clarity) and include its message in the error message.","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        # Timeout reached without achieving stability"},{"line_number":369,"context_line":"        error_msg \u003d _(\u0027BMC resources failed to stabilize within \u0027"},{"line_number":370,"context_line":"                      \u0027%(timeout)s seconds for node %(node)s\u0027) % {"},{"line_number":371,"context_line":"            \u0027timeout\u0027: timeout, \u0027node\u0027: node.uuid}"},{"line_number":372,"context_line":"        LOG.error(error_msg)"},{"line_number":373,"context_line":"        raise exception.RedfishError(error\u003derror_msg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"64e60425_2fd3903f","line":370,"in_reply_to":"b1859682_c8ae033a","updated":"2025-10-02 12:46:19.000000000","message":"Done","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[{"line_number":575,"context_line":"                self._validate_resources_stability(node, validation_timeout)"},{"line_number":576,"context_line":"                # NOTE(janders) while we know the node us up and responding to"},{"line_number":577,"context_line":"                # queries (otherwise we would have raised an exception in"},{"line_number":578,"context_line":"                # _validate_resourcecs_stability()) let\u0027s update cache with"},{"line_number":579,"context_line":"                # the new versions"},{"line_number":580,"context_line":"                conductor_utils.node_update_cache(task)"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"096e87f6_985962ce","line":578,"updated":"2025-09-30 16:25:07.000000000","message":"nit: typo resources","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                self._validate_resources_stability(node, validation_timeout)"},{"line_number":576,"context_line":"                # NOTE(janders) while we know the node us up and responding to"},{"line_number":577,"context_line":"                # queries (otherwise we would have raised an exception in"},{"line_number":578,"context_line":"                # _validate_resourcecs_stability()) let\u0027s update cache with"},{"line_number":579,"context_line":"                # the new versions"},{"line_number":580,"context_line":"                conductor_utils.node_update_cache(task)"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"e9844dd1_1d845d73","line":578,"in_reply_to":"096e87f6_985962ce","updated":"2025-10-02 12:46:19.000000000","message":"I will move this addition to the other patch focusing specifically on node_update_cache() changes (and make it depend on this one).","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b553b163e8111225d416b2ec1fbcc61900236b33","unresolved":true,"context_lines":[{"line_number":380,"context_line":"                last_exc \u003d e"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"            # Wait before next validation attempt"},{"line_number":383,"context_line":"            time.sleep(validation_interval)"},{"line_number":384,"context_line":"        # Timeout reached without achieving stability"},{"line_number":385,"context_line":"        error_msg \u003d _(\u0027BMC resources failed to stabilize within \u0027"},{"line_number":386,"context_line":"                      \u0027%(timeout)s seconds for node %(node)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":20,"id":"75909600_a86caaf9","line":383,"range":{"start_line":383,"start_character":0,"end_line":383,"end_character":43},"updated":"2025-10-03 18:57:03.000000000","message":"so, effectively with the defaults and all, this is going to consume a whole thread for 90+ settings.\n\nDo we *really* need to wait 30 seconds and attempt for success three times?\n\nWe *really* need deferred tasks.","commit_id":"85ec9d655f7e8ade0a611ceb8d202c841123f05c"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6e9d421777c64ce9fd299cd164d25ff8aece3314","unresolved":true,"context_lines":[{"line_number":380,"context_line":"                last_exc \u003d e"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"            # Wait before next validation attempt"},{"line_number":383,"context_line":"            time.sleep(validation_interval)"},{"line_number":384,"context_line":"        # Timeout reached without achieving stability"},{"line_number":385,"context_line":"        error_msg \u003d _(\u0027BMC resources failed to stabilize within \u0027"},{"line_number":386,"context_line":"                      \u0027%(timeout)s seconds for node %(node)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":20,"id":"b10c9f89_090551b7","line":383,"range":{"start_line":383,"start_character":0,"end_line":383,"end_character":43},"in_reply_to":"75909600_a86caaf9","updated":"2025-10-17 01:50:49.000000000","message":"This will likely depend on the machine I would say \u003d(","commit_id":"85ec9d655f7e8ade0a611ceb8d202c841123f05c"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"3e9b19821c4d19bb60067a3af3cb39641fd59c5a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                last_exc \u003d e"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"            # Wait before next validation attempt"},{"line_number":383,"context_line":"            time.sleep(validation_interval)"},{"line_number":384,"context_line":"        # Timeout reached without achieving stability"},{"line_number":385,"context_line":"        error_msg \u003d _(\u0027BMC resources failed to stabilize within \u0027"},{"line_number":386,"context_line":"                      \u0027%(timeout)s seconds for node %(node)s\u0027) % {"}],"source_content_type":"text/x-python","patch_set":20,"id":"fc254bea_a1fcf918","line":383,"range":{"start_line":383,"start_character":0,"end_line":383,"end_character":43},"in_reply_to":"b10c9f89_090551b7","updated":"2025-10-22 19:39:17.000000000","message":"Thank you for your comment, Julia. Agreed it\u0027s not ideal, happy to refactor this once better avenues become available.\nIt feels like 3 attempts 30 seconds apart are about right - I expect the problem BMCs to drop out somewhere around 1-2 minute mark.","commit_id":"85ec9d655f7e8ade0a611ceb8d202c841123f05c"}],"releasenotes/notes/bmc-validation-after-firmware-update-3d5f8a9e76c24d1b.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"be6949f9f5980fd017f5112a013640097cb11c1a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"a7198da8_2a84feba","line":23,"updated":"2025-09-30 16:25:07.000000000","message":"nit: document how to opt out of the behavior (see my comment in the configuration)","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"e5ab6a295dc0cb79a840dfeb73c4d60bf76f3cd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"3898a9ae_9675f954","line":23,"in_reply_to":"a7198da8_2a84feba","updated":"2025-10-02 12:46:19.000000000","message":"Done","commit_id":"3afa18c173ba33dc25ecf260ccb9e091fff7f1cb"}]}
