Managed Host State Diagrams
This document contains the complete Finite State Machine (FSM) that illustrates the lifecycle of NICo managed hosts from discovery through ingestion through instance assignment and management.
High-Level Overview
The main flow shows the primary states and transitions between them:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 } 5 6 state "DpuDiscoveringState" as DpuDiscoveringState 7 state "DPUInit" as DPUInit 8 state "HostInit" as HostInit 9 state "HostInit/Discovered" as HostInit_HI_Discovered 10 state "BomValidating" as BomValidating 11 state "Validation" as Validation 12 state "Measuring" as Measuring 13 state "Ready" as Ready 14 state "Assigned" as Assigned 15 state "HostReprovision" as HostReprovision 16 state "DPUReprovision" as DPUReprovision 17 state "PostAssignedMeasuring" as PostAssignedMeasuring 18 state "WaitingForCleanup" as WaitingForCleanup 19 state "AnyNotAssignedState" as AnyNotAssignedState 20 state "Failed" as Failed 21 state "ForceDeletion" as ForceDeletion 22 23 [*] --> DpuDiscoveringState : Site Explorer creates managed host 24 25 DpuDiscoveringState --> DPUInit : All DPU Security Boot Configured\nDPU Reboot 26 DpuDiscoveringState --> HostInit : No DPU 27 28 DPUInit --> HostInit : DPU Ready 29 30 HostInit --> BomValidating : Host Configured 31 HostInit --> HostInit_HI_Discovered : see HostInit diagram 32 HostInit_HI_Discovered --> Ready 33 34 BomValidating --> Validation : BOM Valid\nAND Validation Enabled 35 BomValidating --> HostInit_HI_Discovered : BOM Valid\nAND Validation Disabled 36 37 Validation --> HostInit_HI_Discovered : Validation Complete 38 Measuring --> Ready : Measurements Valid 39 40 Ready --> HostInit : BIOS Password\nSetup Needed 41 Ready --> Assigned : Instance Assigned 42 Ready --> HostReprovision : Host Reprovision\nRequest 43 Ready --> DPUReprovision : DPU Reprovision\nRequest 44 Ready --> Measuring : Redo Measurements\nRequest 45 Ready --> BomValidating : BOM Validation\nRequest 46 Ready --> Validation : Machine Validation\nRequest 47 48 Assigned --> PostAssignedMeasuring : Measurements required 49 Assigned --> WaitingForCleanup : Cleanup 50 Assigned --> HostReprovision : Host reprovision needed 51 Assigned --> DPUReprovision 52 53 HostReprovision --> Ready : Reprovision Complete 54 HostReprovision --> Assigned : Reprovision Complete 55 56 DPUReprovision --> Assigned : if came from Assigned 57 DPUReprovision --> HostInit_HI_Discovered : if came from Ready 58 DPUReprovision --> HostReprovision : Host reprovision\nrequested 59 60 WaitingForCleanup --> BomValidating 61 62 PostAssignedMeasuring --> WaitingForCleanup : Measurements complete 63 64 AnyNotAssignedState --> Failed : Any failure condition 65 Failed --> AnyNotAssignedState : Recovery (see Failed diagram) 66 Failed --> ForceDeletion : Admin forced deletion 67 Failed --> Failed: Unrecoverable condition 68 69 ForceDeletion --> [*] : Force deletion complete 70 @enduml
DPU Discovery State Details (DpuDiscoveringState)
Shows the complete DPU discovery and configuration process:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 ' ======================================== 8 ' States 9 ' 10 11 '' Own states 12 state "Initializing" as DD_Initializing 13 state if_state_dpu_nodpu <<choice>> 14 state "Configuring" as DD_Configuring 15 state "EnableRshim" as DD_EnableRshim 16 state if_bfb_supported <<choice>> 17 state "HostInit/WaitingForPlatformConfiguration" as HostInit_HI_WaitingForPlatformConfiguration 18 state "DPUInit/InstallingBFB" as DPUInit_DI_IDO_InstallingBFB 19 20 state "EnableSecureBoot" as DD_EnableSecureBoot { 21 state "CheckSecureBootStatus" as DD_SSB_E_CheckSecureBootStatus 22 state "CheckSecureBootStatusWait" as DD_SSB_E_CheckSecureBootStatusWait 23 state "SetSecureBoot" as DD_SSB_E_SetSecureBoot 24 state "RebootDPU" as DD_SSB_E_RebootDPU 25 state "RebootDPUWait" as DD_SSB_E_RebootDPUWait 26 } 27 28 29 state "DisableSecureBoot" as DD_DisableSecureBoot { 30 state "CheckSecureBootStatus" as DD_SSB_D_CheckSecureBootStatus 31 state "CheckSecureBootStatusWait" as DD_SSB_D_CheckSecureBootStatusWait 32 state "DisableSecureBoot" as DD_SSB_D_DisableSecureBoot 33 state "RebootDPU" as DD_SSB_D_RebootDPU 34 state "RebootDPUWait" as DD_SSB_D_RebootDPUWait 35 } 36 37 state "SetUefiHttpBoot" as DD_SetUefiHttpBoot 38 state "RebootAllDPUS" as DD_RebootAllDPUS 39 40 '' Outgoing states 41 state Failed 42 state "DPUInit/Init" as DPUInit_DI_Init 43 44 [*] --> DD_Initializing : Site Explorer creates managed host 45 46 DD_Initializing --> if_state_dpu_nodpu 47 if_state_dpu_nodpu --> DD_Configuring : Assoc DPU 48 if_state_dpu_nodpu --> HostInit_HI_WaitingForPlatformConfiguration : No DPU 49 50 DD_Configuring --> DD_EnableRshim 51 DD_EnableRshim --> if_bfb_supported 52 53 if_bfb_supported --> DD_SSB_E_CheckSecureBootStatus : BFB install supported 54 if_bfb_supported --> DD_SSB_D_CheckSecureBootStatus : BFB install not supported 55 56 DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_SetSecureBoot : Security boot is disabled 57 DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_CheckSecureBootStatusWait : 2nd reboot 58 DD_SSB_E_CheckSecureBootStatusWait --> DD_SSB_E_CheckSecureBootStatus : Wait for DPU\n(5min timeout) 59 DD_SSB_E_CheckSecureBootStatus -----> DPUInit_DI_IDO_InstallingBFB : Security boot is enabled 60 DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_RebootDPU : Get status error 61 DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_CheckSecureBootStatus : Missing data\ncount++\nretry if count < 10 62 DD_SSB_E_CheckSecureBootStatus -----> Failed : count >= 10\ntoo many retries 63 DD_SSB_E_SetSecureBoot --> DD_SSB_E_RebootDPU 64 DD_SSB_E_RebootDPU --> DD_SSB_E_RebootDPU : Reboot again 65 DD_SSB_E_RebootDPU --> DD_SSB_E_CheckSecureBootStatus : Two reboots 66 DD_SSB_E_RebootDPU --> DD_SSB_E_RebootDPUWait 67 DD_SSB_E_RebootDPUWait --> DD_SSB_E_RebootDPU : Wait for DPU (5min timeout) 68 69 DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_DisableSecureBoot : Security boot is enabled 70 DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_CheckSecureBootStatusWait : 2nd reboot 71 DD_SSB_D_CheckSecureBootStatusWait --> DD_SSB_D_CheckSecureBootStatus : Wait for DPU (5min timeout) 72 DD_SSB_D_CheckSecureBootStatus -----> DD_SetUefiHttpBoot : Security boot is disabled 73 DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_RebootDPU : Get status error 74 DD_SSB_D_CheckSecureBootStatus -----> Failed : count >= 10\ntoo many retries 75 DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_CheckSecureBootStatus : Missing data\ncount++\nretry if count < 10 76 DD_SSB_D_DisableSecureBoot --> DD_SSB_D_RebootDPU 77 DD_SSB_D_RebootDPU --> DD_SSB_D_RebootDPU : Reboot again 78 DD_SSB_D_RebootDPU --> DD_SSB_D_CheckSecureBootStatus : Two reboots 79 DD_SSB_D_RebootDPU --> DD_SSB_D_RebootDPUWait 80 DD_SSB_D_RebootDPUWait --> DD_SSB_D_RebootDPU : Wait for DPU (5min timeout) 81 82 DD_SetUefiHttpBoot --> DD_RebootAllDPUS 83 DD_RebootAllDPUS --> DPUInit_DI_Init 84 @enduml
DPU Initialization State Details (DpuInitState)
Shows DPU initialization including BFB installation:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 ' ======================================== 8 ' States 9 ' 10 11 '' Incoming states 12 state "DpuDiscoveringState/CheckSecureBootStatus" as DpuDiscoveringState_DD_SSB_E_CheckSecureBootStatus 13 state "DpuDiscoveringState/RebootAllDPUS" as DpuDiscoveringState_DD_RebootAllDPUS 14 15 '' Own states 16 state "Init" as DI_Init 17 state "InstallDpuOs" as DI_InstallDpuOs { 18 state "InstallingBFB" as DI_IDO_InstallingBFB 19 state "WaitForInstallComplete" as DI_IDO_WaitForInstallComplete 20 state "Completed" as DI_IDO_Completed 21 state "InstallationError" as DI_IDO_InstallationError 22 } 23 note right of DI_IDO_InstallationError : Terminal state - waits indefinitely 24 25 state "WaitingForPlatformPowercycle" as DI_WaitingForPlatformPowercycle { 26 state "Off" as DI_W4PP_OFF 27 state "On" as DI_W4PP_ON 28 } 29 30 state "WaitingForPlatformConfiguration" as DI_WaitingForPlatformConfiguration 31 state "WaitingForNetworkConfig" as DI_WaitingForNetworkConfig 32 33 '' Outgoing states 34 state "HostInit/EnableIpmiOverLan" as HostInit_HI_EnableIpmiOverLan 35 36 ' ======================================== 37 ' Transitions 38 ' 39 DpuDiscoveringState_DD_SSB_E_CheckSecureBootStatus --> DI_IDO_InstallingBFB : Security boot is enabled 40 DpuDiscoveringState_DD_RebootAllDPUS --> DI_Init 41 42 DI_IDO_InstallingBFB --> DI_IDO_WaitForInstallComplete 43 DI_IDO_WaitForInstallComplete --> DI_IDO_WaitForInstallComplete : Task Running/New/Starting (wait more) 44 DI_IDO_WaitForInstallComplete --> DI_IDO_Completed : Task completed 45 DI_IDO_WaitForInstallComplete ---> DI_IDO_InstallationError : Task exception 46 DI_IDO_Completed --> DI_Init 47 48 DI_Init --> DI_W4PP_OFF : Restart all DPUs 49 DI_W4PP_OFF --> DI_W4PP_OFF : DPUs not synchronized (wait more) 50 DI_W4PP_OFF --> DI_W4PP_ON : All DPUs synchronized, power OFF host 51 DI_W4PP_ON --> DI_WaitingForPlatformConfiguration : Power ON host 52 DI_WaitingForPlatformConfiguration --> DI_WaitingForNetworkConfig : Call machine-setup/uefi-setup and restart DPU\nRestart DPU to apply BIOS settings 53 DI_WaitingForNetworkConfig --> DI_WaitingForNetworkConfig : DPU network not ready (wait more, potentially reboot DPU) 54 DI_WaitingForNetworkConfig --> HostInit_HI_EnableIpmiOverLan 55 @enduml
Host Initialization State Details (HostInitState)
Shows host initialization including boot order and UEFI setup:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 ' ======================================== 8 ' States 9 ' 10 11 '' Incoming states 12 state "DpuDiscoveringState/Initializing" as DpuDiscoveringState_DD_Initializing 13 state "DpuInitState/WaitingForNetworkConfig" as DpuInitState_DI_WaitingForNetworkConfig 14 state "DPUReprovision/RebootHost" as DPUReprovision_DR_RebootHost 15 state "Validation/MachineValidating" as Validation_V_MachineValidating 16 17 '' Own states 18 state "SetBootOrder" as HI_SetBootOrder { 19 state hi_sbo_if_zero_dpu <<choice>> 20 state "SetBootOrder" as HI_SBO_SetBootOrder 21 state "WaitForSetBootOrderJobScheduled" as HI_SBO_WaitForSetBootOrderJobScheduled 22 state "RebootHost" as HI_SBO_RebootHost 23 state "WaitForSetBootOrderJobCompletion" as HI_SBO_WaitForSetBootOrderJobCompletion 24 } 25 26 state hi_attestation_enabled <<choice>> 27 28 state HI_Measuring { 29 state "WaitingForMeasurements" as HI_M_WaitingForMeasurements 30 state "PendingBundle" as HI_M_PendingBundle 31 } 32 33 state "UefiSetup" as HI_UefiSetup { 34 state "UnlockHost" as HI_USS_UnlockHost 35 state "SetUefiPassword" as HI_USS_SetUefiPassword 36 state "WaitForPasswordJobScheduled" as HI_USS_WaitForPasswordJobScheduled 37 state "PowercycleHost" as HI_USS_PowercycleHost 38 state "WaitForPasswordJobCompletion" as HI_USS_WaitForPasswordJobCompletion 39 state "LockdownHost" as HI_USS_LockdownHost 40 } 41 42 state "WaitingForLockdown" as HI_WaitingForLockdown { 43 state "TimeWaitForDPUDown" as HI_WFL_TimeWaitForDPUDown 44 state "WaitForDPUUp" as HI_WFL_WaitForDPUUp 45 } 46 47 state "EnableIpmiOverLan" as HI_EnableIpmiOverLan 48 state "WaitingForPlatformConfiguration" as HI_WaitingForPlatformConfiguration 49 state "WaitingForDiscovery" as HI_WaitingForDiscovery 50 state "Discovered" as HI_Discovered 51 52 '' Outgoing states 53 state "BomValidating/MatchingSku" as BomValidating_BV_MatchingSku 54 state Ready 55 56 ' Note 57 note left of DpuDiscoveringState_DD_Initializing : In reallity any DpuDiscoveringState can be entry point\nbut effectively only DD_Initializing 58 59 ' ======================================== 60 ' Transitions 61 ' 62 DpuDiscoveringState_DD_Initializing --> HI_WaitingForPlatformConfiguration : No DPU 63 DpuInitState_DI_WaitingForNetworkConfig --> HI_EnableIpmiOverLan 64 Failed --> HI_WFL_TimeWaitForDPUDown 65 Failed --> HI_M_WaitingForMeasurements 66 67 HI_EnableIpmiOverLan --> HI_WaitingForPlatformConfiguration : Enable IPMI over LAN access 68 HI_WaitingForPlatformConfiguration --> HI_SBO_SetBootOrder : Call machine setup/Restart Host 69 70 HI_SBO_SetBootOrder --> hi_sbo_if_zero_dpu 71 hi_sbo_if_zero_dpu --> HI_SBO_WaitForSetBootOrderJobCompletion : No DPU 72 hi_sbo_if_zero_dpu --> HI_SBO_WaitForSetBootOrderJobScheduled : DPU 73 HI_SBO_WaitForSetBootOrderJobScheduled --> HI_SBO_RebootHost 74 HI_SBO_RebootHost --> HI_SBO_WaitForSetBootOrderJobCompletion 75 HI_SBO_SetBootOrder --> HI_SBO_WaitForSetBootOrderJobCompletion 76 HI_SBO_WaitForSetBootOrderJobCompletion --> hi_attestation_enabled 77 78 hi_attestation_enabled --> HI_M_WaitingForMeasurements : if attestation is enabled 79 hi_attestation_enabled --> HI_WaitingForDiscovery : if attestation is disabled 80 81 HI_M_WaitingForMeasurements --> HI_M_WaitingForMeasurements : Waiting for machine to send measurement report 82 HI_M_WaitingForMeasurements --> HI_M_PendingBundle : Wait for golden values 83 HI_M_WaitingForMeasurements --> HI_WaitingForDiscovery : Measurements validated 84 HI_M_PendingBundle --> HI_M_PendingBundle : Waiting for matching measurement bundle 85 HI_M_PendingBundle --> HI_M_WaitingForMeasurements : Measurements wiped, restart 86 HI_M_PendingBundle --> HI_WaitingForDiscovery : Measurements validated 87 88 HI_WaitingForDiscovery --> HI_WaitingForDiscovery : Wait for scout to update 89 HI_WaitingForDiscovery --> HI_USS_SetUefiPassword : Discovery is Successful 90 91 HI_USS_UnlockHost --> HI_USS_SetUefiPassword 92 HI_USS_SetUefiPassword --> HI_USS_WaitForPasswordJobScheduled : job created 93 HI_USS_SetUefiPassword --> HI_USS_LockdownHost : Fail\nAND !Dell\nAND !Lenovo\nAND !Nvidia 94 HI_USS_WaitForPasswordJobScheduled --> HI_USS_PowercycleHost 95 HI_USS_PowercycleHost --> HI_USS_WaitForPasswordJobCompletion 96 HI_USS_WaitForPasswordJobCompletion --> HI_USS_LockdownHost 97 98 HI_USS_LockdownHost --> HI_WFL_TimeWaitForDPUDown 99 100 HI_WFL_TimeWaitForDPUDown --> HI_WFL_WaitForDPUUp 101 HI_WFL_WaitForDPUUp --> BomValidating_BV_MatchingSku 102 103 BomValidating --> HI_Discovered 104 Validation_V_MachineValidating --> HI_Discovered 105 DPUReprovision_DR_RebootHost --> HI_Discovered 106 HI_Discovered --> HI_Discovered : need reboot 107 HI_Discovered --> Ready : rebooted 108 Ready --> HI_USS_UnlockHost : Need setup BIOS password 109 @enduml
BOM Validation State Details (BomValidating)
Shows the BOM (Bill of Materials) validation process:
1 @startuml 2 3 skinparam state { 4 BackgroundColor White 5 BorderColor Black 6 } 7 8 ' ======================================== 9 ' States 10 ' 11 12 '' Incoming states 13 state "HostInitState/WaitForDPUUp" as HostInitState_HI_WFL_WaitForDPUUp 14 state Ready 15 state "WaitingForCleanup/HostCleanup" as WaitingForCleanup_C_HostCleanup 16 state "WaitingForCleanup/LockHost" as WaitingForCleanup_C_SBV_LockHost 17 18 '' Own states 19 state bv_requested <<choice>> 20 state "MatchingSku" as BV_MatchingSku 21 state "UpdatingInventory" as BV_UpdatingInventory 22 state "VerifyingSku" as BV_VerifyingSku 23 state "SkuVerificationFailed" as BV_SkuVerificationFailed 24 state "WaitingForSkuAssignment" as BV_WaitingForSkuAssignment 25 state "SkuMissing" as BV_SkuMissing 26 state bv_validation_enabled <<choice>> 27 28 '' Outgoing states 29 state "Validation/RebootHost" as Validation_V_RebootHost 30 state "HostInit/Discovered" as HostInit_HI_Discovered 31 32 ' ======================================== 33 ' Transitions 34 ' 35 HostInitState_HI_WFL_WaitForDPUUp --> BV_MatchingSku 36 WaitingForCleanup_C_HostCleanup --> BV_UpdatingInventory 37 WaitingForCleanup_C_SBV_LockHost --> BV_UpdatingInventory 38 Ready --> bv_requested 39 40 bv_requested --> BV_UpdatingInventory : Possible SKU match 41 bv_requested --> BV_WaitingForSkuAssignment : SKU unassigned 42 bv_requested --> BV_SkuMissing : SKU not found 43 44 BV_MatchingSku --> BV_VerifyingSku : SKU present 45 BV_MatchingSku --> BV_WaitingForSkuAssignment : SKU not present\nAND !matched 46 BV_UpdatingInventory --> BV_UpdatingInventory : Wait discovery 47 BV_UpdatingInventory --> BV_MatchingSku : SKU not present 48 BV_UpdatingInventory --> BV_VerifyingSku : SKU present 49 BV_VerifyingSku --> BV_MatchingSku : SKU present 50 BV_VerifyingSku --> BV_SkuMissing : SKU not found 51 BV_VerifyingSku --> BV_SkuVerificationFailed : SKU diff is not empty 52 BV_SkuVerificationFailed --> BV_WaitingForSkuAssignment : SKU not present 53 BV_SkuVerificationFailed --> BV_UpdatingInventory : Update timeout 54 BV_SkuVerificationFailed --> BV_SkuVerificationFailed : Wait update timeout 55 BV_WaitingForSkuAssignment --> BV_UpdatingInventory : SKU present\nOR matched 56 BV_WaitingForSkuAssignment --> BV_WaitingForSkuAssignment : wait assignment 57 BV_SkuMissing --> BV_UpdatingInventory : SKU present and found 58 BV_SkuMissing --> BV_SkuMissing : SKU present and not found 59 BV_SkuMissing --> BV_WaitingForSkuAssignment : SKU not present 60 61 BV_WaitingForSkuAssignment --> bv_validation_enabled : BOM validation disabled 62 BV_MatchingSku --> bv_validation_enabled : BOM validation disabled\nOR (SKU Present and matched) 63 BV_VerifyingSku --> bv_validation_enabled : SKU diff is empty 64 65 bv_validation_enabled --> Validation_V_RebootHost : validation\nenabled 66 bv_validation_enabled --> HostInit_HI_Discovered : validation\ndisabled 67 @enduml
Machine Validation State Details (ValidationState)
Shows the machine validation process:
1 @startuml 2 left to right direction 3 4 skinparam state { 5 BackgroundColor White 6 BorderColor Black 7 } 8 9 ' ======================================== 10 ' States 11 ' 12 13 '' Incoming states 14 state "BomValidating/bv_validation_enabled" as BomValidating_bv_validation_enabled 15 state Ready 16 17 '' Own states 18 state "RebootHost" as V_RebootHost 19 state "MachineValidating" as V_MachineValidating 20 21 '' Outgoing states 22 state "HostInit/Discovered" as HostInit_HI_Discovered 23 state Failed 24 25 ' ======================================== 26 ' Transitions 27 ' 28 Ready --> V_RebootHost : validation is requested 29 BomValidating_bv_validation_enabled --> V_RebootHost : validation is enabled 30 V_RebootHost --> V_MachineValidating 31 V_MachineValidating --> V_MachineValidating : validation in progress 32 V_MachineValidating --> HostInit_HI_Discovered : validation disabled\nOR validated successfully 33 V_MachineValidating --> Failed : validation failed 34 @enduml
Ready State Details (Ready)
Shows what can happen in Ready state:
1 @startuml 2 left to right direction 3 4 skinparam state { 5 BackgroundColor White 6 BorderColor Black 7 } 8 9 ' ======================================== 10 ' States 11 ' 12 13 '' Incoming states 14 state Measuring 15 state HostReprovision 16 state "HostInit/Discovered" as HostInit_HI_Discovered 17 '' Own states 18 state Ready 19 '' Outgoing states 20 state "Validation/RebootHost" as Validation_V_RebootHost 21 state "BomValidating/bv_requested" as BomValidating_bv_requested 22 state "Assigned/WaitingForNetworkSegmentToBeReady" as Assigned_A_WaitingForNetworkSegmentToBeReady 23 state "HostInit/UefiSetup/UnlockHost" as HostInit_HI_UefiSetup_HI_USS_UnlockHost 24 state "Measuring/WaitingForMeasurements" as Measuring_M_WaitingForMeasurements 25 state "DPUReprovision/dr_bfb_check_support" as DPUReprovision_dr_bfb_check_support 26 state "HostReprovision/CheckingFirmware" as HostReprovision_HR_CheckingFirmware 27 28 ' ======================================== 29 ' Transitions 30 ' 31 HostInit_HI_Discovered --> Ready 32 Measuring --> Ready : Measuring completed 33 HostReprovision --> Ready : Host reprovision completed 34 35 Ready --> Validation_V_RebootHost : Machine validation requested 36 Ready --> BomValidating_bv_requested : BOM validation requested 37 Ready --> DPUReprovision_dr_bfb_check_support : DPU reprovision requested 38 Ready --> HostReprovision_HR_CheckingFirmware : Host reprovision requested 39 Ready --> Assigned_A_WaitingForNetworkSegmentToBeReady : Instance assigned 40 Ready --> Measuring_M_WaitingForMeasurements : Redo measuring requested 41 Ready --> HostInit_HI_UefiSetup_HI_USS_UnlockHost : Need setup BIOS password 42 @enduml
Instance Assignment State Details (InstanceState)
Shows the complete instance assignment and management flow:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 ' ======================================== 8 ' States 9 ' 10 11 '' Incoming states 12 state Ready 13 state "DPUReprovision/DR_RebootHost" as DPUReprovision_DR_RebootHost 14 state "HostReprovision/HR_CheckingFirmware" as HostReprovision_HR_CheckingFirmware 15 16 '' Own states 17 state "WaitingForNetworkSegmentToBeReady" as A_WaitingForNetworkSegmentToBeReady 18 state "WaitingForNetworkConfig" as A_WaitingForNetworkConfig 19 state "WaitingForStorageConfig:" as A_WaitingForStorageConfig 20 state "WaitingForRebootToReady:" as A_WaitingForRebootToReady 21 state "Assigned/Ready:" as A_Ready 22 state "WaitingForDpusToUp:" as A_WaitingForDpusToUp 23 state "BootingWithDiscoveryImage:" as A_BootingWithDiscoveryImage 24 state "SwitchToAdminNetwork:" as A_SwitchToAdminNetwork 25 state "WaitingForNetworkReconfig:" as A_WaitingForNetworkReconfig 26 state a_release_instance <<choice>> 27 state "Assigned/Failed" as A_Failed 28 state "NetworkConfigUpdate" as A_NetworkConfigUpdate { 29 state "WaitingForNetworkSegmentToBeReady" as A_NCU_WaitingForNetworkSegmentToBeReady 30 state "WaitingForConfigSynced" as A_NCU_WaitingForConfigSynced 31 state "ReleaseOldResources" as A_NCU_ReleaseOldResources 32 } 33 state "HostPlatformConfiguration" as A_HostPlatformConfiguration { 34 state "PowerCycle" as A_HPC_PowerCycle 35 state "UnlockHost" as A_HPC_UnlockHost { 36 state "DisableLockdown" as A_HPC_UH_DisableLockdown 37 state "RebootHost" as A_HPC_UH_RebootHost 38 state "WaitForUefiBoot" as A_HPC_UH_WaitForUefiBoot 39 } 40 state "CheckHostConfig" as A_HPC_CheckHostConfig 41 state "ConfigureBios" as A_HPC_ConfigureBios 42 state "PollingBiosSetup" as A_HPC_PollingBiosSetup 43 state "SetBootOrder" as A_HPC_SetBootOrder { 44 state "SetBootOrder" as A_HPC_SBO_SetBootOrder 45 state "WaitForSetBootOrderJobScheduled" as A_HPC_SBO_WaitForSetBootOrderJobScheduled 46 state "RebootHost" as A_HPC_SBO_RebootHost 47 state "WaitForSetBootOrderJobCompletion" as A_HPC_SBO_WaitForSetBootOrderJobCompletion 48 } 49 state "LockHost" as A_HPC_LockHost 50 } 51 52 '' Outgoing states 53 state "PostAssignedMeasuring/WaitingForMeasurements" as PostAssignedMeasuring_M_WaitingForMeasurements 54 state "WaitingForCleanup/Init" as WaitingForCleanup_C_Init 55 state "DPUReprovision/dr_bfb_check_support" as DPUReprovision_dr_bfb_check_support 56 57 ' ======================================== 58 ' Transitions 59 ' 60 Ready --> A_WaitingForNetworkSegmentToBeReady : Instance assigned 61 62 A_WaitingForNetworkSegmentToBeReady --> A_WaitingForNetworkSegmentToBeReady : segments not ready 63 A_WaitingForNetworkSegmentToBeReady --> A_WaitingForNetworkConfig : No segment OR segments ready 64 65 A_WaitingForNetworkConfig --> A_WaitingForNetworkConfig : Host network not synced on DPU 66 A_WaitingForNetworkConfig --> A_WaitingForStorageConfig : No DPU\nOR Host network synced on DPU 67 68 A_WaitingForStorageConfig --> A_WaitingForRebootToReady : Attach storage volumes 69 A_WaitingForRebootToReady --> A_Ready : Reboot machine 70 71 A_Ready --> A_NCU_WaitingForNetworkSegmentToBeReady : Update network request 72 A_Ready --> A_HPC_PowerCycle : (Instance deleted OR Host/DPU reporvisioning requested)\nAND need config bootorder 73 A_Ready --> A_WaitingForDpusToUp : (Instance deleted OR Host/DPU reporvisioning requested)\nAND not need config bootorder\nAND Power is Off 74 A_Ready --> A_BootingWithDiscoveryImage : (Instance deleted OR Host/DPU reporvisioning requested)\nAND not need config bootorder\nAND Power is On 75 76 A_WaitingForDpusToUp --> A_BootingWithDiscoveryImage : DPUs UP-triggered 77 A_WaitingForDpusToUp --> A_WaitingForDpusToUp : Not DPUs UP-triggered 78 79 A_BootingWithDiscoveryImage --> A_BootingWithDiscoveryImage : Retry reboot if needed 80 A_BootingWithDiscoveryImage --> A_SwitchToAdminNetwork : If instance deleted 81 A_BootingWithDiscoveryImage --> DPUReprovision_dr_bfb_check_support : DPU reprovision needed 82 A_BootingWithDiscoveryImage --> HostReprovision_HR_CheckingFirmware : Host reprovision needed 83 A_BootingWithDiscoveryImage --> A_BootingWithDiscoveryImage : Nothing is needed. Stuck. 84 85 DPUReprovision_DR_RebootHost --> A_Ready : Reprovision completed 86 state "HostReprovision/hr_completed" as HostReprovision_hr_completed 87 HostReprovision_hr_completed --> A_Ready : Reprovision not needed 88 89 A_SwitchToAdminNetwork --> A_WaitingForNetworkReconfig : Update network config 90 91 A_WaitingForNetworkReconfig --> A_WaitingForNetworkReconfig : Network not synced 92 A_WaitingForNetworkReconfig --> a_release_instance : Delete instance & clean network config 93 a_release_instance --> PostAssignedMeasuring_M_WaitingForMeasurements : attenstation enabled 94 a_release_instance --> WaitingForCleanup_C_Init : attenstation disabled 95 96 A_NCU_WaitingForNetworkSegmentToBeReady --> A_NCU_WaitingForConfigSynced : No segments\nOR All ready 97 A_NCU_WaitingForNetworkSegmentToBeReady --> A_NCU_WaitingForNetworkSegmentToBeReady : Not all segments ready 98 99 A_NCU_WaitingForConfigSynced --> A_NCU_ReleaseOldResources : No DPU\nOR DPU synced 100 A_NCU_WaitingForConfigSynced --> A_NCU_WaitingForConfigSynced : Wait for DPU synced 101 A_NCU_ReleaseOldResources --> A_Ready 102 103 A_HPC_PowerCycle --> A_HPC_PowerCycle : Wait Power Off 104 A_HPC_PowerCycle --> A_HPC_UH_DisableLockdown : Power On 105 A_HPC_UH_DisableLockdown --> A_HPC_UH_RebootHost : BMC lockdown disabled 106 A_HPC_UH_RebootHost --> A_HPC_UH_WaitForUefiBoot : ForceRestart issued 107 A_HPC_UH_WaitForUefiBoot --> A_HPC_UH_WaitForUefiBoot : Waiting for UEFI boot (5 min) 108 A_HPC_UH_WaitForUefiBoot --> A_HPC_CheckHostConfig : UEFI boot wait complete 109 A_HPC_CheckHostConfig --> A_HPC_CheckHostConfig : Wait DPU Up 110 A_HPC_CheckHostConfig --> A_HPC_ConfigureBios : Need config host boot order 111 A_HPC_CheckHostConfig --> A_HPC_LockHost : No need config host boot order 112 A_HPC_ConfigureBios --> A_HPC_PollingBiosSetup : Config BIOS 113 A_HPC_PollingBiosSetup --> A_HPC_PollingBiosSetup : Wait for BIOS setup 114 A_HPC_PollingBiosSetup --> A_HPC_SBO_SetBootOrder : BIOS is setup 115 A_HPC_SBO_SetBootOrder --> A_HPC_SBO_WaitForSetBootOrderJobScheduled : Set boot order job scheduled 116 A_HPC_SBO_WaitForSetBootOrderJobScheduled --> A_HPC_SBO_RebootHost : Job scheduled 117 A_HPC_SBO_RebootHost --> A_HPC_SBO_WaitForSetBootOrderJobCompletion : Reboot 118 A_HPC_SBO_WaitForSetBootOrderJobCompletion --> A_HPC_LockHost : Job completed 119 A_HPC_LockHost --> A_WaitingForDpusToUp : BMC lockdown enabled 120 121 state AnyState 122 AnyState --> A_Failed : Any failure condition 123 A_Failed --> A_Failed : Wait (stuck, manual action needed) 124 @enduml
Host Reprovision State Details (HostReprovisionState)
Shows the host firmware reprovision process:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 8 ' ======================================== 9 ' States 10 ' 11 12 '' Incoming states 13 state Ready 14 state "Assigned/BootingWithDiscoveryImage" as Assigned_A_BootingWithDiscoveryImage 15 16 '' Own states 17 state "CheckingFirmware" as HR_CheckingFirmware 18 state "CheckingFirmwareRepeat" as HR_CheckingFirmwareRepeat 19 state "InitialReset" as HR_InitialReset { 20 state "Start" as HR_IR_Start 21 state "BMCWasReset" as HR_IR_BMCWasReset 22 state "WaitBoot" as HR_IR_WaitBoot 23 } 24 state "WaitingForScript" as HR_WaitingForScript 25 state "WaitingForUpload" as HR_WaitingForUpload 26 state "WaitingForFirmwareUpgrade" as HR_WaitingForFirmwareUpgrade 27 state "ResetForNewFirmware" as HR_ResetForNewFirmware 28 state "NewFirmwareReportedWait" as HR_NewFirmwareReportedWait 29 state "FailedFirmwareUpgrade" as HR_FailedFirmwareUpgrade 30 state hr_completed <<choice>> 31 32 '' Outgoing states 33 state "Assigned/Ready" as Assigned_A_Ready 34 35 ' ======================================== 36 ' Transitions 37 ' 38 Ready --> HR_CheckingFirmware : Host reprovision request 39 Assigned_A_BootingWithDiscoveryImage --> HR_CheckingFirmware : Host reprovision request 40 41 HR_CheckingFirmware --> HR_IR_Start : Firmware needs pre-update reset 42 HR_IR_Start --> HR_IR_BMCWasReset : Power Off 43 HR_IR_BMCWasReset --> HR_IR_WaitBoot : Power On 44 HR_IR_WaitBoot --> HR_IR_WaitBoot : Wait 20 min 45 HR_IR_WaitBoot --> HR_CheckingFirmwareRepeat 46 HR_CheckingFirmware --> HR_WaitingForScript : Upgrade using script 47 HR_WaitingForScript --> HR_CheckingFirmwareRepeat : Script completed 48 HR_WaitingForScript --> HR_FailedFirmwareUpgrade : Script failed 49 HR_CheckingFirmware --> HR_CheckingFirmwareRepeat : No explored endpoint data 50 HR_CheckingFirmware --> hr_completed : FW info not found 51 HR_CheckingFirmwareRepeat --> hr_completed : FW info not found 52 HR_CheckingFirmware --> HR_WaitingForUpload 53 HR_WaitingForUpload --> HR_CheckingFirmwareRepeat : No upload status upload error 54 HR_WaitingForUpload --> HR_WaitingForFirmwareUpgrade : Upload success 55 HR_WaitingForFirmwareUpgrade --> HR_WaitingForUpload : Update\nAND has more 56 HR_WaitingForFirmwareUpgrade --> HR_ResetForNewFirmware : Updated last 57 HR_WaitingForFirmwareUpgrade --> HR_CheckingFirmwareRepeat : Task interrupted\nOR get error 58 HR_WaitingForFirmwareUpgrade --> HR_FailedFirmwareUpgrade : Unknown task status 59 HR_ResetForNewFirmware --> HR_NewFirmwareReportedWait 60 HR_NewFirmwareReportedWait --> hr_completed 61 HR_FailedFirmwareUpgrade --> HR_FailedFirmwareUpgrade : Wait retry timeout 62 HR_FailedFirmwareUpgrade --> HR_CheckingFirmware : Retry after timeout 63 64 hr_completed --> Assigned_A_Ready : if Assigned state 65 hr_completed --> Ready : if source is Ready state 66 @enduml
DPU Reprovision State Details (DpuReprovisionState)
Shows the DPU firmware reprovision process:
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 ' ======================================== 8 ' States 9 ' 10 11 '' Incoming states 12 state Ready 13 state "Assigned/BootingWithDiscoveryImage" as Assigned_A_BootingWithDiscoveryImage 14 15 '' Own states 16 state dr_bfb_check_support <<choice>> 17 state BmcFirmwareUpgrade 18 state "BmcFirmwareUpgrade" as DR_BmcFirmwareUpgrade 19 state "InstallDpuOs" as DR_InstallDpuOs { 20 state "InstallingBFB" as DR_IDO_InstallingBFB 21 state "WaitForInstallComplete" as DR_IDO_WaitForInstallComplete 22 state "Completed" as DR_IDO_Completed 23 state "InstallationError" as DR_IDO_InstallationError 24 } 25 state "FirmwareUpgrade" as DR_FirmwareUpgrade 26 state "WaitingForNetworkInstall" as DR_WaitingForNetworkInstall 27 state "PoweringOffHost" as DR_PoweringOffHost 28 state "PowerDown" as DR_PowerDown 29 state "BufferTime" as DR_BufferTime 30 state "VerifyFirmareVersions" as DR_VerifyFirmareVersions 31 state "WaitingForNetworkConfig" as DR_WaitingForNetworkConfig 32 state "RebootHostBmc" as DR_RebootHostBmc 33 state "RebootHost" as DR_RebootHost 34 state "NotUnderReprovision" as DR_NotUnderReprovision 35 36 '' Outgoing states 37 state "Assigned/Ready" as Assigned_A_Ready 38 state "HostInit/Discovered" as HostInit_HI_Discovered 39 state "HostReprovision/CheckingFirmware" as HostReprovision_HR_CheckingFirmware 40 41 ' ======================================== 42 ' Transitions 43 ' 44 Ready --> dr_bfb_check_support : DPU reprovision request 45 Assigned_A_BootingWithDiscoveryImage --> dr_bfb_check_support : DPU reprovision request 46 47 dr_bfb_check_support --> DR_IDO_InstallingBFB : BFB install supported 48 dr_bfb_check_support --> DR_WaitingForNetworkInstall : BFB install not supported 49 50 DR_IDO_InstallingBFB --> DR_IDO_WaitForInstallComplete : Start update 51 DR_IDO_WaitForInstallComplete --> DR_IDO_Completed : Task completed 52 DR_IDO_WaitForInstallComplete --> DR_IDO_InstallationError : Task exception\nOR unknown state 53 DR_IDO_WaitForInstallComplete --> DR_IDO_WaitForInstallComplete : Wait task completion 54 DR_IDO_Completed --> DR_WaitingForNetworkInstall 55 56 DR_BmcFirmwareUpgrade --> DR_FirmwareUpgrade : deprecated 57 DR_FirmwareUpgrade --> DR_WaitingForNetworkInstall : deprecated 58 DR_BufferTime --> DR_VerifyFirmareVersions : deprecated 59 DR_WaitingForNetworkInstall --> DR_PoweringOffHost 60 DR_PoweringOffHost --> DR_PoweringOffHost : wait all DPU ready 61 DR_PoweringOffHost --> DR_PowerDown : DPUs ready 62 DR_PowerDown --> DR_PowerDown : Wait Power off 63 DR_PowerDown --> DR_VerifyFirmareVersions : Power is off 64 DR_VerifyFirmareVersions --> DR_WaitingForNetworkConfig 65 DR_WaitingForNetworkConfig --> DR_WaitingForNetworkConfig : Any DPU is not up\nOR network not synced 66 DR_WaitingForNetworkConfig --> DR_RebootHostBmc 67 DR_RebootHostBmc --> DR_RebootHost 68 DR_RebootHost --> HostInit_HI_Discovered : if entered from Ready 69 DR_RebootHost --> HostReprovision_HR_CheckingFirmware : if entered from Assigned\nAND host reprovision requested 70 DR_RebootHost --> Assigned_A_Ready : if entered from Assigned\nAND host reprovision not requested 71 @enduml
WaitingForCleanup State Details
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 ' ======================================== 8 ' States 9 ' 10 11 '' Incoming states 12 state "Assigned/A_WaitingForNetworkReconfig" as Assigned_A_WaitingForNetworkReconfig 13 state Failed 14 15 '' Own states 16 state "Init" as C_Init 17 state "SecureEraseBoss" as C_SecureEraseBoss { 18 state "UnlockHost" as C_SEB_UnlockHost 19 state "SecureEraseBoss" as C_SEB_SecureEraseBoss 20 state "WaitForJobCompletion" as C_SEB_WaitForJobCompletion 21 state "HandleJobFailure" as C_SEB_HandleJobFailure 22 } 23 state C_HostCleanup 24 state C_CreateBossVolume { 25 state "CreateBossVolume" as C_SBV_CreateBossVolume 26 state "WaitForJobScheduled" as C_SBV_WaitForJobScheduled 27 state "RebootHost" as C_SBV_RebootHost 28 state "WaitForJobCompletion" as C_SBV_WaitForJobCompletion 29 state "LockHost" as C_SBV_LockHost 30 state "HandleJobFailure" as C_SBV_HandleJobFailure 31 } 32 state "DisableBIOSBMCLockdown" as C_DisableBIOSBMCLockdown 33 34 '' Outgoing states 35 state "BomValidating/UpdatingInventory" as BomValidating_BV_UpdatingInventory 36 37 ' ======================================== 38 ' Transitions 39 ' 40 Failed --> C_Init 41 Assigned_A_WaitingForNetworkReconfig --> C_Init 42 C_Init --> C_SEB_UnlockHost : If Dell\nAND has Boss controller 43 C_Init --> C_HostCleanup : If not Dell\nOR no Boss controller 44 45 C_SEB_UnlockHost --> C_SEB_SecureEraseBoss 46 C_SEB_SecureEraseBoss --> C_SEB_WaitForJobCompletion 47 C_SEB_WaitForJobCompletion --> C_HostCleanup : Job success 48 C_SEB_WaitForJobCompletion --> C_SEB_HandleJobFailure : Job fail 49 C_SEB_WaitForJobCompletion --> C_SEB_WaitForJobCompletion : Wait job to complete 50 C_SEB_HandleJobFailure --> C_SEB_HandleJobFailure : Power off\nOR Power on if needed 51 C_SEB_HandleJobFailure --> C_SEB_SecureEraseBoss : Retry 52 C_SEB_HandleJobFailure --> C_SEB_HandleJobFailure : Power cycle (Off / On) 53 C_HostCleanup --> C_HostCleanup : Wait for cleanup 54 C_HostCleanup --> C_SBV_CreateBossVolume : if Boss controller present 55 C_HostCleanup --> BomValidating_BV_UpdatingInventory : if Boss controller not present 56 57 C_SBV_CreateBossVolume --> C_SBV_WaitForJobScheduled 58 C_SBV_WaitForJobScheduled --> C_SBV_RebootHost 59 C_SBV_RebootHost --> C_SBV_WaitForJobCompletion 60 C_SBV_WaitForJobCompletion --> C_SBV_HandleJobFailure : Job fail 61 C_SBV_WaitForJobCompletion --> C_SBV_LockHost : Job success 62 C_SBV_WaitForJobCompletion --> C_SBV_WaitForJobCompletion : Wait job to complete 63 C_SBV_HandleJobFailure --> C_SBV_HandleJobFailure : Power off\nOR Power on if needed 64 C_SBV_HandleJobFailure --> C_SBV_CreateBossVolume : Retry 65 C_SBV_HandleJobFailure --> C_SBV_HandleJobFailure : Power cycle (Off / On) 66 C_SBV_LockHost --> BomValidating_BV_UpdatingInventory 67 @enduml
Measuring and PostAssignedMeasuring State Details
Shows the attestation measurement process.
1 @startuml 2 skinparam state { 3 BackgroundColor White 4 BorderColor Black 5 } 6 7 state "Assigned/WaitingForNetworkReconfig" as Assigned_A_WaitingForNetworkReconfig 8 state Ready 9 state "WaitingForMeasurements" as M_WaitingForMeasurements 10 state "PendingBundle" as M_PendingBundle 11 state m_return_success <<choice>> 12 state Failed 13 state "WaitingForCleanup/Init" as WaitingForCleanup_C_Init 14 15 Ready --> M_WaitingForMeasurements : Redo measuring requested 16 Assigned_A_WaitingForNetworkReconfig --> M_WaitingForMeasurements : On instance delete 17 M_WaitingForMeasurements --> M_PendingBundle : Wait for golden values 18 M_WaitingForMeasurements --> M_WaitingForMeasurements : Wait for measurements 19 M_WaitingForMeasurements --> m_return_success : Measurements validated 20 M_WaitingForMeasurements --> Failed : Measurements failed 21 M_PendingBundle --> m_return_success : Measurements validated 22 M_PendingBundle --> Failed : Measurements failed 23 m_return_success --> Ready : if came from Ready state 24 m_return_success --> WaitingForCleanup_C_Init : if came from Assigned state 25 @enduml
Failed State
1 @startuml 2 left to right direction 3 4 skinparam state { 5 BackgroundColor White 6 BorderColor Black 7 } 8 9 state AnyNotAssignedState 10 state Failed 11 state "HostInit/WaitingForLockdown/TimeWaitForDPUDown" as HostInit_HI_WaitingForLockdown_HI_WFL_TimeWaitForDPUDown 12 state "WaitingForCleanup/Init" as WaitingForCleanup_C_Init 13 state "HostInit/Measuring/WaitingForMeasurements" as HostInit_HI_Measuring_HI_M_WaitingForMeasurements 14 state "Measuring/WaitingForMeasurements" as Measuring_M_WaitingForMeasurements 15 state "PostAssignedMeasuring/WaitingForMeasurements" as PostAssignedMeasuring_M_WaitingForMeasurements 16 state "Validation/RebootHost" as Validation_V_RebootHost 17 state ForceDeletion 18 19 AnyNotAssignedState --> Failed 20 Failed --> HostInit_HI_WaitingForLockdown_HI_WFL_TimeWaitForDPUDown : Discovery Failure\nOn discovery succeeded 21 Failed --> Failed : Reboot with retry count 22 Failed --> WaitingForCleanup_C_Init : NVMECleanFailed\nCleaned up successfully after a failure 23 Failed --> Measuring_M_WaitingForMeasurements : Measurements Fail\nNot in original failure cause anymore 24 Failed --> HostInit_HI_Measuring_HI_M_WaitingForMeasurements : Measurements Fail\nNot in original failure cause anymore 25 Failed --> PostAssignedMeasuring_M_WaitingForMeasurements : Measurements Fail\nNot in original failure cause anymore 26 Failed --> Validation_V_RebootHost : MachineValidation Fail\nMachine validation requested 27 Failed --> Failed : Non-recoverable cause 28 Failed --> ForceDeletion : Admin force deletion 29 @enduml