-- 在 Lua 脚本中检测到签名校验失败
if not verify_signature(filepath) then
task_mgmt.update_task(task_id, {
State = "Exception",
MessageId = "FirmwareSignatureInvalid",
Parameters = { file = filepath }
})
return false
end
关键组件关联:
Upgrade Mgmt Lua → task_mgmt.lua:负责状态更新
FirmwareStatusError、SystemError:作为错误源被检测后触发状态变更
2. Killed 状态触发
触发定义:
Killed 表示任务被外部强制终止,通常由管理员操作、安全策略或系统保护机制触发。
与 Exception 不同,Killed 更多体现为主动杀掉任务的行为。
可能触发场景:
场景
描述
管理员手动终止任务
通过 Redfish API 或 Web UI 发送“取消任务”请求,调用 CancelTask 接口,最终由 task_mgmt 将状态设为 Killed。
安全策略阻止执行
如执行 tar 或 flashcp 命令时被安全策略拒绝(execution_rejected),系统强制终止任务以防止越权操作。
系统资源耗尽
如内存不足、磁盘满、任务超时,系统自动清理任务。
BMC 重启或升级过程
在固件管理中,若正在进行的任务与即将触发的重启冲突,则会被提前标记为 Killed。
触发机制示例:
-- 收到取消任务指令
function cancel_task(task_id)
local task_obj = task_mgmt.get_task_obj(task_id)
if task_obj then
task_mgmt.update_task(task_id, {
State = "Killed",
Status = "Critical",
MessageId = "TaskCancelledByUser"
})
end
end
-- 温控系统检测到高温告警
if thermal_mgmt.is_severe_overtemp() then
task_mgmt.update_task(current_task_id, {
State = "Interrupted",
MessageId = "UpgradeInterruptedByOverTemperature"
})
log.warn("Upgrade interrupted due to thermal event")
end