)]}'
{"ironic/conf/redfish.py":[{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"847fbc0610ebfcd865a6790ac7adeeb3d175eda2","unresolved":true,"context_lines":[{"line_number":166,"context_line":"                      \u0027start applying firmware, while others can begin \u0027"},{"line_number":167,"context_line":"                      \u0027immediately. This timeout helps determine which \u0027"},{"line_number":168,"context_line":"                      \u0027behavior the hardware exhibits.\u0027)),"},{"line_number":169,"context_line":"    cfg.IntOpt(\u0027firmware_update_post_reboot_verify_timeout\u0027,"},{"line_number":170,"context_line":"               min\u003d0,"},{"line_number":171,"context_line":"               default\u003d1800,"},{"line_number":172,"context_line":"               help\u003d_(\u0027Maximum time (in seconds) to wait, after a reboot \u0027"},{"line_number":173,"context_line":"                      \u0027to apply staged firmware, for the post-reboot \u0027"},{"line_number":174,"context_line":"                      \u0027verify phase to complete: a Dell Lifecycle \u0027"},{"line_number":175,"context_line":"                      \u0027Controller job finishing (Dell only) and the \u0027"},{"line_number":176,"context_line":"                      \u0027node reaching a target BootProgress state. \u0027"},{"line_number":177,"context_line":"                      \u0027During servicing the node must reach OSRunning, \u0027"},{"line_number":178,"context_line":"                      \u0027so that the firmware versions cached before the \u0027"},{"line_number":179,"context_line":"                      \u0027step resumes are current; during cleaning and \u0027"},{"line_number":180,"context_line":"                      \u0027deployment an earlier state is accepted, since \u0027"},{"line_number":181,"context_line":"                      \u0027no OS need boot. Each check is skipped when \u0027"},{"line_number":182,"context_line":"                      \u0027unavailable. The node may be flashing firmware \u0027"},{"line_number":183,"context_line":"                      \u0027during POST for part of this period, so it must \u0027"},{"line_number":184,"context_line":"                      \u0027accommodate a full POST cycle. Set to 0 to wait \u0027"},{"line_number":185,"context_line":"                      \u0027indefinitely, bounded only by \u0027"},{"line_number":186,"context_line":"                      \u0027``firmware_update_overall_timeout``. Default is \u0027"},{"line_number":187,"context_line":"                      \u00271800 seconds (30 minutes).\u0027)),"},{"line_number":188,"context_line":"    cfg.IntOpt(\u0027firmware_update_os_running_timeout\u0027,"},{"line_number":189,"context_line":"               min\u003d0,"},{"line_number":190,"context_line":"               default\u003d300,"},{"line_number":191,"context_line":"               help\u003d_(\u0027Maximum time (in seconds) to keep waiting for \u0027"},{"line_number":192,"context_line":"                      \u0027BootProgress to report OSRunning after the node \u0027"},{"line_number":193,"context_line":"                      \u0027has finished POST, reporting \u0027"},{"line_number":194,"context_line":"                      \u0027SystemHardwareInitializationComplete or \u0027"},{"line_number":195,"context_line":"                      \u0027OSBootStarted, during a servicing firmware \u0027"},{"line_number":196,"context_line":"                      \u0027update. The firmware versions cached \u0027"},{"line_number":197,"context_line":"                      \u0027before the step resumes are most accurate once \u0027"},{"line_number":198,"context_line":"                      \u0027the OS is fully running, but whether and when a \u0027"},{"line_number":199,"context_line":"                      \u0027BMC reports OSRunning is platform-specific and \u0027"},{"line_number":200,"context_line":"                      \u0027not guaranteed by the Redfish schema: some BMCs \u0027"},{"line_number":201,"context_line":"                      \u0027never advance past the end of POST. \u0027"},{"line_number":202,"context_line":"                      \u0027When this time elapses, Ironic logs a warning \u0027"},{"line_number":203,"context_line":"                      \u0027and proceeds. Set to 0 to not wait beyond the \u0027"},{"line_number":204,"context_line":"                      \u0027end of POST at all. Only applies to servicing: \u0027"},{"line_number":205,"context_line":"                      \u0027cleaning and deployment accept earlier boot \u0027"},{"line_number":206,"context_line":"                      \u0027states. Default is 300 seconds (5 minutes).\u0027)),"},{"line_number":207,"context_line":"    cfg.IntOpt(\u0027firmware_update_boot_check_delay\u0027,"},{"line_number":208,"context_line":"               min\u003d0,"},{"line_number":209,"context_line":"               default\u003d600,"},{"line_number":210,"context_line":"               help\u003d_(\u0027Minimum time (in seconds) after a reboot issued \u0027"},{"line_number":211,"context_line":"                      \u0027to apply firmware before Ironic trusts a target \u0027"},{"line_number":212,"context_line":"                      \u0027BootProgress state it has not seen the node \u0027"},{"line_number":213,"context_line":"                      \u0027reach. A reboot request does not reset \u0027"},{"line_number":214,"context_line":"                      \u0027BootProgress: until the host actually resets, \u0027"},{"line_number":215,"context_line":"                      \u0027the BMC keeps reporting the state the previous \u0027"},{"line_number":216,"context_line":"                      \u0027boot ended in, so an immediate reading can be a \u0027"},{"line_number":217,"context_line":"                      \u0027stale one. It is also how long a node whose BMC \u0027"},{"line_number":218,"context_line":"                      \u0027does not report BootProgress at all is held \u0027"},{"line_number":219,"context_line":"                      \u0027before it is allowed to proceed. On hardware \u0027"},{"line_number":220,"context_line":"                      \u0027that gives no boot signal this delay stands in \u0027"},{"line_number":221,"context_line":"                      \u0027for the whole POST-and-flash window, during \u0027"},{"line_number":222,"context_line":"                      \u0027which the node must not be powered off, so it \u0027"},{"line_number":223,"context_line":"                      \u0027should comfortably exceed the slowest POST \u0027"},{"line_number":224,"context_line":"                      \u0027expected in the deployment. Where the reboot is \u0027"},{"line_number":225,"context_line":"                      \u0027observed instead -- BootProgress changes after \u0027"},{"line_number":226,"context_line":"                      \u0027the reset, or a non-target state is polled -- \u0027"},{"line_number":227,"context_line":"                      \u0027the delay does not apply and the node proceeds \u0027"},{"line_number":228,"context_line":"                      \u0027as soon as its boot state says it may. Default \u0027"},{"line_number":229,"context_line":"                      \u0027is 600 seconds (10 minutes).\u0027)),"},{"line_number":230,"context_line":"    cfg.IntOpt(\u0027firmware_update_reboot_watch_timeout\u0027,"},{"line_number":231,"context_line":"               min\u003d0,"},{"line_number":232,"context_line":"               default\u003d60,"},{"line_number":233,"context_line":"               help\u003d_(\u0027How long (in seconds) to watch BootProgress, \u0027"},{"line_number":234,"context_line":"                      \u0027after issuing a reboot to apply firmware, for \u0027"},{"line_number":235,"context_line":"                      \u0027LastState to leave the value it held before the \u0027"},{"line_number":236,"context_line":"                      \u0027reboot, which proves the node reset. A BMC that \u0027"},{"line_number":237,"context_line":"                      \u0027resets slowly may need more. If the change is \u0027"},{"line_number":238,"context_line":"                      \u0027not seen within this time, Ironic falls back on \u0027"},{"line_number":239,"context_line":"                      \u0027``firmware_update_boot_check_delay``; a change \u0027"},{"line_number":240,"context_line":"                      \u0027seen later by the regular polling still counts. \u0027"},{"line_number":241,"context_line":"                      \u0027Set to 0 to disable the watch. Default is 60 \u0027"},{"line_number":242,"context_line":"                      \u0027seconds.\u0027)),"},{"line_number":243,"context_line":"    cfg.IntOpt(\u0027firmware_update_overall_timeout\u0027,"},{"line_number":244,"context_line":"               min\u003d0,"},{"line_number":245,"context_line":"               default\u003d7200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"71dd719b_ee03b719","line":242,"range":{"start_line":169,"start_character":5,"end_line":242,"end_character":35},"updated":"2026-09-17 06:59:11.000000000","message":"this may benefit from discussion with wider group.\n1) we are leaning towards too many knobs\n2) how does BootProgress timeout interact with LC-phase timeout","commit_id":"0b8db255a7fe63414071eb84c2e4ab5649906329"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"d95fe175b6bbe8e7f8e855e15ec054e8c90048df","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                      \u0027start applying firmware, while others can begin \u0027"},{"line_number":167,"context_line":"                      \u0027immediately. This timeout helps determine which \u0027"},{"line_number":168,"context_line":"                      \u0027behavior the hardware exhibits.\u0027)),"},{"line_number":169,"context_line":"    cfg.IntOpt(\u0027firmware_update_post_reboot_verify_timeout\u0027,"},{"line_number":170,"context_line":"               min\u003d0,"},{"line_number":171,"context_line":"               default\u003d1800,"},{"line_number":172,"context_line":"               help\u003d_(\u0027Maximum time (in seconds) to wait, after a reboot \u0027"},{"line_number":173,"context_line":"                      \u0027to apply staged firmware, for the post-reboot \u0027"},{"line_number":174,"context_line":"                      \u0027verify phase to complete: a Dell Lifecycle \u0027"},{"line_number":175,"context_line":"                      \u0027Controller job finishing (Dell only) and the \u0027"},{"line_number":176,"context_line":"                      \u0027node reaching a target BootProgress state. \u0027"},{"line_number":177,"context_line":"                      \u0027During servicing the node must reach OSRunning, \u0027"},{"line_number":178,"context_line":"                      \u0027so that the firmware versions cached before the \u0027"},{"line_number":179,"context_line":"                      \u0027step resumes are current; during cleaning and \u0027"},{"line_number":180,"context_line":"                      \u0027deployment an earlier state is accepted, since \u0027"},{"line_number":181,"context_line":"                      \u0027no OS need boot. Each check is skipped when \u0027"},{"line_number":182,"context_line":"                      \u0027unavailable. The node may be flashing firmware \u0027"},{"line_number":183,"context_line":"                      \u0027during POST for part of this period, so it must \u0027"},{"line_number":184,"context_line":"                      \u0027accommodate a full POST cycle. Set to 0 to wait \u0027"},{"line_number":185,"context_line":"                      \u0027indefinitely, bounded only by \u0027"},{"line_number":186,"context_line":"                      \u0027``firmware_update_overall_timeout``. Default is \u0027"},{"line_number":187,"context_line":"                      \u00271800 seconds (30 minutes).\u0027)),"},{"line_number":188,"context_line":"    cfg.IntOpt(\u0027firmware_update_os_running_timeout\u0027,"},{"line_number":189,"context_line":"               min\u003d0,"},{"line_number":190,"context_line":"               default\u003d300,"},{"line_number":191,"context_line":"               help\u003d_(\u0027Maximum time (in seconds) to keep waiting for \u0027"},{"line_number":192,"context_line":"                      \u0027BootProgress to report OSRunning after the node \u0027"},{"line_number":193,"context_line":"                      \u0027has finished POST, reporting \u0027"},{"line_number":194,"context_line":"                      \u0027SystemHardwareInitializationComplete or \u0027"},{"line_number":195,"context_line":"                      \u0027OSBootStarted, during a servicing firmware \u0027"},{"line_number":196,"context_line":"                      \u0027update. The firmware versions cached \u0027"},{"line_number":197,"context_line":"                      \u0027before the step resumes are most accurate once \u0027"},{"line_number":198,"context_line":"                      \u0027the OS is fully running, but whether and when a \u0027"},{"line_number":199,"context_line":"                      \u0027BMC reports OSRunning is platform-specific and \u0027"},{"line_number":200,"context_line":"                      \u0027not guaranteed by the Redfish schema: some BMCs \u0027"},{"line_number":201,"context_line":"                      \u0027never advance past the end of POST. \u0027"},{"line_number":202,"context_line":"                      \u0027When this time elapses, Ironic logs a warning \u0027"},{"line_number":203,"context_line":"                      \u0027and proceeds. Set to 0 to not wait beyond the \u0027"},{"line_number":204,"context_line":"                      \u0027end of POST at all. Only applies to servicing: \u0027"},{"line_number":205,"context_line":"                      \u0027cleaning and deployment accept earlier boot \u0027"},{"line_number":206,"context_line":"                      \u0027states. Default is 300 seconds (5 minutes).\u0027)),"},{"line_number":207,"context_line":"    cfg.IntOpt(\u0027firmware_update_boot_check_delay\u0027,"},{"line_number":208,"context_line":"               min\u003d0,"},{"line_number":209,"context_line":"               default\u003d600,"},{"line_number":210,"context_line":"               help\u003d_(\u0027Minimum time (in seconds) after a reboot issued \u0027"},{"line_number":211,"context_line":"                      \u0027to apply firmware before Ironic trusts a target \u0027"},{"line_number":212,"context_line":"                      \u0027BootProgress state it has not seen the node \u0027"},{"line_number":213,"context_line":"                      \u0027reach. A reboot request does not reset \u0027"},{"line_number":214,"context_line":"                      \u0027BootProgress: until the host actually resets, \u0027"},{"line_number":215,"context_line":"                      \u0027the BMC keeps reporting the state the previous \u0027"},{"line_number":216,"context_line":"                      \u0027boot ended in, so an immediate reading can be a \u0027"},{"line_number":217,"context_line":"                      \u0027stale one. It is also how long a node whose BMC \u0027"},{"line_number":218,"context_line":"                      \u0027does not report BootProgress at all is held \u0027"},{"line_number":219,"context_line":"                      \u0027before it is allowed to proceed. On hardware \u0027"},{"line_number":220,"context_line":"                      \u0027that gives no boot signal this delay stands in \u0027"},{"line_number":221,"context_line":"                      \u0027for the whole POST-and-flash window, during \u0027"},{"line_number":222,"context_line":"                      \u0027which the node must not be powered off, so it \u0027"},{"line_number":223,"context_line":"                      \u0027should comfortably exceed the slowest POST \u0027"},{"line_number":224,"context_line":"                      \u0027expected in the deployment. Where the reboot is \u0027"},{"line_number":225,"context_line":"                      \u0027observed instead -- BootProgress changes after \u0027"},{"line_number":226,"context_line":"                      \u0027the reset, or a non-target state is polled -- \u0027"},{"line_number":227,"context_line":"                      \u0027the delay does not apply and the node proceeds \u0027"},{"line_number":228,"context_line":"                      \u0027as soon as its boot state says it may. Default \u0027"},{"line_number":229,"context_line":"                      \u0027is 600 seconds (10 minutes).\u0027)),"},{"line_number":230,"context_line":"    cfg.IntOpt(\u0027firmware_update_reboot_watch_timeout\u0027,"},{"line_number":231,"context_line":"               min\u003d0,"},{"line_number":232,"context_line":"               default\u003d60,"},{"line_number":233,"context_line":"               help\u003d_(\u0027How long (in seconds) to watch BootProgress, \u0027"},{"line_number":234,"context_line":"                      \u0027after issuing a reboot to apply firmware, for \u0027"},{"line_number":235,"context_line":"                      \u0027LastState to leave the value it held before the \u0027"},{"line_number":236,"context_line":"                      \u0027reboot, which proves the node reset. A BMC that \u0027"},{"line_number":237,"context_line":"                      \u0027resets slowly may need more. If the change is \u0027"},{"line_number":238,"context_line":"                      \u0027not seen within this time, Ironic falls back on \u0027"},{"line_number":239,"context_line":"                      \u0027``firmware_update_boot_check_delay``; a change \u0027"},{"line_number":240,"context_line":"                      \u0027seen later by the regular polling still counts. \u0027"},{"line_number":241,"context_line":"                      \u0027Set to 0 to disable the watch. Default is 60 \u0027"},{"line_number":242,"context_line":"                      \u0027seconds.\u0027)),"},{"line_number":243,"context_line":"    cfg.IntOpt(\u0027firmware_update_overall_timeout\u0027,"},{"line_number":244,"context_line":"               min\u003d0,"},{"line_number":245,"context_line":"               default\u003d7200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"22b903a8_447dc6d7","line":242,"range":{"start_line":169,"start_character":5,"end_line":242,"end_character":35},"in_reply_to":"71dd719b_ee03b719","updated":"2026-09-17 10:37:01.000000000","message":"I think this is actually OK for now, there is no interference between BootProgress and LC timeouts.","commit_id":"0b8db255a7fe63414071eb84c2e4ab5649906329"}]}
