Managed Host State Diagrams

View as Markdown

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
2skinparam state {
3 BackgroundColor White
4}
5
6state "DpuDiscoveringState" as DpuDiscoveringState
7state "DPUInit" as DPUInit
8state "HostInit" as HostInit
9state "HostInit/Discovered" as HostInit_HI_Discovered
10state "BomValidating" as BomValidating
11state "Validation" as Validation
12state "Measuring" as Measuring
13state "Ready" as Ready
14state "Assigned" as Assigned
15state "HostReprovision" as HostReprovision
16state "DPUReprovision" as DPUReprovision
17state "PostAssignedMeasuring" as PostAssignedMeasuring
18state "WaitingForCleanup" as WaitingForCleanup
19state "AnyNotAssignedState" as AnyNotAssignedState
20state "Failed" as Failed
21state "ForceDeletion" as ForceDeletion
22
23[*] --> DpuDiscoveringState : Site Explorer creates managed host
24
25DpuDiscoveringState --> DPUInit : All DPU Security Boot Configured\nDPU Reboot
26DpuDiscoveringState --> HostInit : No DPU
27
28DPUInit --> HostInit : DPU Ready
29
30HostInit --> BomValidating : Host Configured
31HostInit --> HostInit_HI_Discovered : see HostInit diagram
32HostInit_HI_Discovered --> Ready
33
34BomValidating --> Validation : BOM Valid\nAND Validation Enabled
35BomValidating --> HostInit_HI_Discovered : BOM Valid\nAND Validation Disabled
36
37Validation --> HostInit_HI_Discovered : Validation Complete
38Measuring --> Ready : Measurements Valid
39
40Ready --> HostInit : BIOS Password\nSetup Needed
41Ready --> Assigned : Instance Assigned
42Ready --> HostReprovision : Host Reprovision\nRequest
43Ready --> DPUReprovision : DPU Reprovision\nRequest
44Ready --> Measuring : Redo Measurements\nRequest
45Ready --> BomValidating : BOM Validation\nRequest
46Ready --> Validation : Machine Validation\nRequest
47
48Assigned --> PostAssignedMeasuring : Measurements required
49Assigned --> WaitingForCleanup : Cleanup
50Assigned --> HostReprovision : Host reprovision needed
51Assigned --> DPUReprovision
52
53HostReprovision --> Ready : Reprovision Complete
54HostReprovision --> Assigned : Reprovision Complete
55
56DPUReprovision --> Assigned : if came from Assigned
57DPUReprovision --> HostInit_HI_Discovered : if came from Ready
58DPUReprovision --> HostReprovision : Host reprovision\nrequested
59
60WaitingForCleanup --> BomValidating
61
62PostAssignedMeasuring --> WaitingForCleanup : Measurements complete
63
64AnyNotAssignedState --> Failed : Any failure condition
65Failed --> AnyNotAssignedState : Recovery (see Failed diagram)
66Failed --> ForceDeletion : Admin forced deletion
67Failed --> Failed: Unrecoverable condition
68
69ForceDeletion --> [*] : Force deletion complete
70@enduml

DPU Discovery State Details (DpuDiscoveringState)

Shows the complete DPU discovery and configuration process:

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7' ========================================
8' States
9'
10
11'' Own states
12state "Initializing" as DD_Initializing
13state if_state_dpu_nodpu <<choice>>
14state "Configuring" as DD_Configuring
15state "EnableRshim" as DD_EnableRshim
16state if_bfb_supported <<choice>>
17state "HostInit/WaitingForPlatformConfiguration" as HostInit_HI_WaitingForPlatformConfiguration
18state "DPUInit/InstallingBFB" as DPUInit_DI_IDO_InstallingBFB
19
20state "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
29state "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
37state "SetUefiHttpBoot" as DD_SetUefiHttpBoot
38state "RebootAllDPUS" as DD_RebootAllDPUS
39
40'' Outgoing states
41state Failed
42state "DPUInit/Init" as DPUInit_DI_Init
43
44[*] --> DD_Initializing : Site Explorer creates managed host
45
46DD_Initializing --> if_state_dpu_nodpu
47if_state_dpu_nodpu --> DD_Configuring : Assoc DPU
48if_state_dpu_nodpu --> HostInit_HI_WaitingForPlatformConfiguration : No DPU
49
50DD_Configuring --> DD_EnableRshim
51DD_EnableRshim --> if_bfb_supported
52
53if_bfb_supported --> DD_SSB_E_CheckSecureBootStatus : BFB install supported
54if_bfb_supported --> DD_SSB_D_CheckSecureBootStatus : BFB install not supported
55
56DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_SetSecureBoot : Security boot is disabled
57DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_CheckSecureBootStatusWait : 2nd reboot
58DD_SSB_E_CheckSecureBootStatusWait --> DD_SSB_E_CheckSecureBootStatus : Wait for DPU\n(5min timeout)
59DD_SSB_E_CheckSecureBootStatus -----> DPUInit_DI_IDO_InstallingBFB : Security boot is enabled
60DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_RebootDPU : Get status error
61DD_SSB_E_CheckSecureBootStatus --> DD_SSB_E_CheckSecureBootStatus : Missing data\ncount++\nretry if count < 10
62DD_SSB_E_CheckSecureBootStatus -----> Failed : count >= 10\ntoo many retries
63DD_SSB_E_SetSecureBoot --> DD_SSB_E_RebootDPU
64DD_SSB_E_RebootDPU --> DD_SSB_E_RebootDPU : Reboot again
65DD_SSB_E_RebootDPU --> DD_SSB_E_CheckSecureBootStatus : Two reboots
66DD_SSB_E_RebootDPU --> DD_SSB_E_RebootDPUWait
67DD_SSB_E_RebootDPUWait --> DD_SSB_E_RebootDPU : Wait for DPU (5min timeout)
68
69DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_DisableSecureBoot : Security boot is enabled
70DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_CheckSecureBootStatusWait : 2nd reboot
71DD_SSB_D_CheckSecureBootStatusWait --> DD_SSB_D_CheckSecureBootStatus : Wait for DPU (5min timeout)
72DD_SSB_D_CheckSecureBootStatus -----> DD_SetUefiHttpBoot : Security boot is disabled
73DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_RebootDPU : Get status error
74DD_SSB_D_CheckSecureBootStatus -----> Failed : count >= 10\ntoo many retries
75DD_SSB_D_CheckSecureBootStatus --> DD_SSB_D_CheckSecureBootStatus : Missing data\ncount++\nretry if count < 10
76DD_SSB_D_DisableSecureBoot --> DD_SSB_D_RebootDPU
77DD_SSB_D_RebootDPU --> DD_SSB_D_RebootDPU : Reboot again
78DD_SSB_D_RebootDPU --> DD_SSB_D_CheckSecureBootStatus : Two reboots
79DD_SSB_D_RebootDPU --> DD_SSB_D_RebootDPUWait
80DD_SSB_D_RebootDPUWait --> DD_SSB_D_RebootDPU : Wait for DPU (5min timeout)
81
82DD_SetUefiHttpBoot --> DD_RebootAllDPUS
83DD_RebootAllDPUS --> DPUInit_DI_Init
84@enduml

DPU Initialization State Details (DpuInitState)

Shows DPU initialization including BFB installation:

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7' ========================================
8' States
9'
10
11'' Incoming states
12state "DpuDiscoveringState/CheckSecureBootStatus" as DpuDiscoveringState_DD_SSB_E_CheckSecureBootStatus
13state "DpuDiscoveringState/RebootAllDPUS" as DpuDiscoveringState_DD_RebootAllDPUS
14
15'' Own states
16state "Init" as DI_Init
17state "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}
23note right of DI_IDO_InstallationError : Terminal state - waits indefinitely
24
25state "WaitingForPlatformPowercycle" as DI_WaitingForPlatformPowercycle {
26 state "Off" as DI_W4PP_OFF
27 state "On" as DI_W4PP_ON
28}
29
30state "WaitingForPlatformConfiguration" as DI_WaitingForPlatformConfiguration
31state "WaitingForNetworkConfig" as DI_WaitingForNetworkConfig
32
33'' Outgoing states
34state "HostInit/EnableIpmiOverLan" as HostInit_HI_EnableIpmiOverLan
35
36' ========================================
37' Transitions
38'
39DpuDiscoveringState_DD_SSB_E_CheckSecureBootStatus --> DI_IDO_InstallingBFB : Security boot is enabled
40DpuDiscoveringState_DD_RebootAllDPUS --> DI_Init
41
42DI_IDO_InstallingBFB --> DI_IDO_WaitForInstallComplete
43DI_IDO_WaitForInstallComplete --> DI_IDO_WaitForInstallComplete : Task Running/New/Starting (wait more)
44DI_IDO_WaitForInstallComplete --> DI_IDO_Completed : Task completed
45DI_IDO_WaitForInstallComplete ---> DI_IDO_InstallationError : Task exception
46DI_IDO_Completed --> DI_Init
47
48DI_Init --> DI_W4PP_OFF : Restart all DPUs
49DI_W4PP_OFF --> DI_W4PP_OFF : DPUs not synchronized (wait more)
50DI_W4PP_OFF --> DI_W4PP_ON : All DPUs synchronized, power OFF host
51DI_W4PP_ON --> DI_WaitingForPlatformConfiguration : Power ON host
52DI_WaitingForPlatformConfiguration --> DI_WaitingForNetworkConfig : Call machine-setup/uefi-setup and restart DPU\nRestart DPU to apply BIOS settings
53DI_WaitingForNetworkConfig --> DI_WaitingForNetworkConfig : DPU network not ready (wait more, potentially reboot DPU)
54DI_WaitingForNetworkConfig --> HostInit_HI_EnableIpmiOverLan
55@enduml

Host Initialization State Details (HostInitState)

Shows host initialization including boot order and UEFI setup:

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7' ========================================
8' States
9'
10
11'' Incoming states
12state "DpuDiscoveringState/Initializing" as DpuDiscoveringState_DD_Initializing
13state "DpuInitState/WaitingForNetworkConfig" as DpuInitState_DI_WaitingForNetworkConfig
14state "DPUReprovision/RebootHost" as DPUReprovision_DR_RebootHost
15state "Validation/MachineValidating" as Validation_V_MachineValidating
16
17'' Own states
18state "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
26state hi_attestation_enabled <<choice>>
27
28state HI_Measuring {
29 state "WaitingForMeasurements" as HI_M_WaitingForMeasurements
30 state "PendingBundle" as HI_M_PendingBundle
31}
32
33state "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
42state "WaitingForLockdown" as HI_WaitingForLockdown {
43 state "TimeWaitForDPUDown" as HI_WFL_TimeWaitForDPUDown
44 state "WaitForDPUUp" as HI_WFL_WaitForDPUUp
45}
46
47state "EnableIpmiOverLan" as HI_EnableIpmiOverLan
48state "WaitingForPlatformConfiguration" as HI_WaitingForPlatformConfiguration
49state "WaitingForDiscovery" as HI_WaitingForDiscovery
50state "Discovered" as HI_Discovered
51
52'' Outgoing states
53state "BomValidating/MatchingSku" as BomValidating_BV_MatchingSku
54state Ready
55
56' Note
57note left of DpuDiscoveringState_DD_Initializing : In reallity any DpuDiscoveringState can be entry point\nbut effectively only DD_Initializing
58
59' ========================================
60' Transitions
61'
62DpuDiscoveringState_DD_Initializing --> HI_WaitingForPlatformConfiguration : No DPU
63DpuInitState_DI_WaitingForNetworkConfig --> HI_EnableIpmiOverLan
64Failed --> HI_WFL_TimeWaitForDPUDown
65Failed --> HI_M_WaitingForMeasurements
66
67HI_EnableIpmiOverLan --> HI_WaitingForPlatformConfiguration : Enable IPMI over LAN access
68HI_WaitingForPlatformConfiguration --> HI_SBO_SetBootOrder : Call machine setup/Restart Host
69
70HI_SBO_SetBootOrder --> hi_sbo_if_zero_dpu
71hi_sbo_if_zero_dpu --> HI_SBO_WaitForSetBootOrderJobCompletion : No DPU
72hi_sbo_if_zero_dpu --> HI_SBO_WaitForSetBootOrderJobScheduled : DPU
73HI_SBO_WaitForSetBootOrderJobScheduled --> HI_SBO_RebootHost
74HI_SBO_RebootHost --> HI_SBO_WaitForSetBootOrderJobCompletion
75HI_SBO_SetBootOrder --> HI_SBO_WaitForSetBootOrderJobCompletion
76HI_SBO_WaitForSetBootOrderJobCompletion --> hi_attestation_enabled
77
78hi_attestation_enabled --> HI_M_WaitingForMeasurements : if attestation is enabled
79hi_attestation_enabled --> HI_WaitingForDiscovery : if attestation is disabled
80
81HI_M_WaitingForMeasurements --> HI_M_WaitingForMeasurements : Waiting for machine to send measurement report
82HI_M_WaitingForMeasurements --> HI_M_PendingBundle : Wait for golden values
83HI_M_WaitingForMeasurements --> HI_WaitingForDiscovery : Measurements validated
84HI_M_PendingBundle --> HI_M_PendingBundle : Waiting for matching measurement bundle
85HI_M_PendingBundle --> HI_M_WaitingForMeasurements : Measurements wiped, restart
86HI_M_PendingBundle --> HI_WaitingForDiscovery : Measurements validated
87
88HI_WaitingForDiscovery --> HI_WaitingForDiscovery : Wait for scout to update
89HI_WaitingForDiscovery --> HI_USS_SetUefiPassword : Discovery is Successful
90
91HI_USS_UnlockHost --> HI_USS_SetUefiPassword
92HI_USS_SetUefiPassword --> HI_USS_WaitForPasswordJobScheduled : job created
93HI_USS_SetUefiPassword --> HI_USS_LockdownHost : Fail\nAND !Dell\nAND !Lenovo\nAND !Nvidia
94HI_USS_WaitForPasswordJobScheduled --> HI_USS_PowercycleHost
95HI_USS_PowercycleHost --> HI_USS_WaitForPasswordJobCompletion
96HI_USS_WaitForPasswordJobCompletion --> HI_USS_LockdownHost
97
98HI_USS_LockdownHost --> HI_WFL_TimeWaitForDPUDown
99
100HI_WFL_TimeWaitForDPUDown --> HI_WFL_WaitForDPUUp
101HI_WFL_WaitForDPUUp --> BomValidating_BV_MatchingSku
102
103BomValidating --> HI_Discovered
104Validation_V_MachineValidating --> HI_Discovered
105DPUReprovision_DR_RebootHost --> HI_Discovered
106HI_Discovered --> HI_Discovered : need reboot
107HI_Discovered --> Ready : rebooted
108Ready --> 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
3skinparam state {
4 BackgroundColor White
5 BorderColor Black
6}
7
8' ========================================
9' States
10'
11
12'' Incoming states
13state "HostInitState/WaitForDPUUp" as HostInitState_HI_WFL_WaitForDPUUp
14state Ready
15state "WaitingForCleanup/HostCleanup" as WaitingForCleanup_C_HostCleanup
16state "WaitingForCleanup/LockHost" as WaitingForCleanup_C_SBV_LockHost
17
18'' Own states
19state bv_requested <<choice>>
20state "MatchingSku" as BV_MatchingSku
21state "UpdatingInventory" as BV_UpdatingInventory
22state "VerifyingSku" as BV_VerifyingSku
23state "SkuVerificationFailed" as BV_SkuVerificationFailed
24state "WaitingForSkuAssignment" as BV_WaitingForSkuAssignment
25state "SkuMissing" as BV_SkuMissing
26state bv_validation_enabled <<choice>>
27
28'' Outgoing states
29state "Validation/RebootHost" as Validation_V_RebootHost
30state "HostInit/Discovered" as HostInit_HI_Discovered
31
32' ========================================
33' Transitions
34'
35HostInitState_HI_WFL_WaitForDPUUp --> BV_MatchingSku
36WaitingForCleanup_C_HostCleanup --> BV_UpdatingInventory
37WaitingForCleanup_C_SBV_LockHost --> BV_UpdatingInventory
38Ready --> bv_requested
39
40bv_requested --> BV_UpdatingInventory : Possible SKU match
41bv_requested --> BV_WaitingForSkuAssignment : SKU unassigned
42bv_requested --> BV_SkuMissing : SKU not found
43
44BV_MatchingSku --> BV_VerifyingSku : SKU present
45BV_MatchingSku --> BV_WaitingForSkuAssignment : SKU not present\nAND !matched
46BV_UpdatingInventory --> BV_UpdatingInventory : Wait discovery
47BV_UpdatingInventory --> BV_MatchingSku : SKU not present
48BV_UpdatingInventory --> BV_VerifyingSku : SKU present
49BV_VerifyingSku --> BV_MatchingSku : SKU present
50BV_VerifyingSku --> BV_SkuMissing : SKU not found
51BV_VerifyingSku --> BV_SkuVerificationFailed : SKU diff is not empty
52BV_SkuVerificationFailed --> BV_WaitingForSkuAssignment : SKU not present
53BV_SkuVerificationFailed --> BV_UpdatingInventory : Update timeout
54BV_SkuVerificationFailed --> BV_SkuVerificationFailed : Wait update timeout
55BV_WaitingForSkuAssignment --> BV_UpdatingInventory : SKU present\nOR matched
56BV_WaitingForSkuAssignment --> BV_WaitingForSkuAssignment : wait assignment
57BV_SkuMissing --> BV_UpdatingInventory : SKU present and found
58BV_SkuMissing --> BV_SkuMissing : SKU present and not found
59BV_SkuMissing --> BV_WaitingForSkuAssignment : SKU not present
60
61BV_WaitingForSkuAssignment --> bv_validation_enabled : BOM validation disabled
62BV_MatchingSku --> bv_validation_enabled : BOM validation disabled\nOR (SKU Present and matched)
63BV_VerifyingSku --> bv_validation_enabled : SKU diff is empty
64
65bv_validation_enabled --> Validation_V_RebootHost : validation\nenabled
66bv_validation_enabled --> HostInit_HI_Discovered : validation\ndisabled
67@enduml

Machine Validation State Details (ValidationState)

Shows the machine validation process:

1@startuml
2left to right direction
3
4skinparam state {
5 BackgroundColor White
6 BorderColor Black
7}
8
9' ========================================
10' States
11'
12
13'' Incoming states
14state "BomValidating/bv_validation_enabled" as BomValidating_bv_validation_enabled
15state Ready
16
17'' Own states
18state "RebootHost" as V_RebootHost
19state "MachineValidating" as V_MachineValidating
20
21'' Outgoing states
22state "HostInit/Discovered" as HostInit_HI_Discovered
23state Failed
24
25' ========================================
26' Transitions
27'
28Ready --> V_RebootHost : validation is requested
29BomValidating_bv_validation_enabled --> V_RebootHost : validation is enabled
30V_RebootHost --> V_MachineValidating
31V_MachineValidating --> V_MachineValidating : validation in progress
32V_MachineValidating --> HostInit_HI_Discovered : validation disabled\nOR validated successfully
33V_MachineValidating --> Failed : validation failed
34@enduml

Ready State Details (Ready)

Shows what can happen in Ready state:

1@startuml
2left to right direction
3
4skinparam state {
5 BackgroundColor White
6 BorderColor Black
7}
8
9' ========================================
10' States
11'
12
13'' Incoming states
14state Measuring
15state HostReprovision
16state "HostInit/Discovered" as HostInit_HI_Discovered
17'' Own states
18state Ready
19'' Outgoing states
20state "Validation/RebootHost" as Validation_V_RebootHost
21state "BomValidating/bv_requested" as BomValidating_bv_requested
22state "Assigned/WaitingForNetworkSegmentToBeReady" as Assigned_A_WaitingForNetworkSegmentToBeReady
23state "HostInit/UefiSetup/UnlockHost" as HostInit_HI_UefiSetup_HI_USS_UnlockHost
24state "Measuring/WaitingForMeasurements" as Measuring_M_WaitingForMeasurements
25state "DPUReprovision/dr_bfb_check_support" as DPUReprovision_dr_bfb_check_support
26state "HostReprovision/CheckingFirmware" as HostReprovision_HR_CheckingFirmware
27
28' ========================================
29' Transitions
30'
31HostInit_HI_Discovered --> Ready
32Measuring --> Ready : Measuring completed
33HostReprovision --> Ready : Host reprovision completed
34
35Ready --> Validation_V_RebootHost : Machine validation requested
36Ready --> BomValidating_bv_requested : BOM validation requested
37Ready --> DPUReprovision_dr_bfb_check_support : DPU reprovision requested
38Ready --> HostReprovision_HR_CheckingFirmware : Host reprovision requested
39Ready --> Assigned_A_WaitingForNetworkSegmentToBeReady : Instance assigned
40Ready --> Measuring_M_WaitingForMeasurements : Redo measuring requested
41Ready --> 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
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7' ========================================
8' States
9'
10
11'' Incoming states
12state Ready
13state "DPUReprovision/DR_RebootHost" as DPUReprovision_DR_RebootHost
14state "HostReprovision/HR_CheckingFirmware" as HostReprovision_HR_CheckingFirmware
15
16'' Own states
17state "WaitingForNetworkSegmentToBeReady" as A_WaitingForNetworkSegmentToBeReady
18state "WaitingForNetworkConfig" as A_WaitingForNetworkConfig
19state "WaitingForStorageConfig:" as A_WaitingForStorageConfig
20state "WaitingForRebootToReady:" as A_WaitingForRebootToReady
21state "Assigned/Ready:" as A_Ready
22state "WaitingForDpusToUp:" as A_WaitingForDpusToUp
23state "BootingWithDiscoveryImage:" as A_BootingWithDiscoveryImage
24state "SwitchToAdminNetwork:" as A_SwitchToAdminNetwork
25state "WaitingForNetworkReconfig:" as A_WaitingForNetworkReconfig
26state a_release_instance <<choice>>
27state "Assigned/Failed" as A_Failed
28state "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}
33state "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
53state "PostAssignedMeasuring/WaitingForMeasurements" as PostAssignedMeasuring_M_WaitingForMeasurements
54state "WaitingForCleanup/Init" as WaitingForCleanup_C_Init
55state "DPUReprovision/dr_bfb_check_support" as DPUReprovision_dr_bfb_check_support
56
57' ========================================
58' Transitions
59'
60Ready --> A_WaitingForNetworkSegmentToBeReady : Instance assigned
61
62A_WaitingForNetworkSegmentToBeReady --> A_WaitingForNetworkSegmentToBeReady : segments not ready
63A_WaitingForNetworkSegmentToBeReady --> A_WaitingForNetworkConfig : No segment OR segments ready
64
65A_WaitingForNetworkConfig --> A_WaitingForNetworkConfig : Host network not synced on DPU
66A_WaitingForNetworkConfig --> A_WaitingForStorageConfig : No DPU\nOR Host network synced on DPU
67
68A_WaitingForStorageConfig --> A_WaitingForRebootToReady : Attach storage volumes
69A_WaitingForRebootToReady --> A_Ready : Reboot machine
70
71A_Ready --> A_NCU_WaitingForNetworkSegmentToBeReady : Update network request
72A_Ready --> A_HPC_PowerCycle : (Instance deleted OR Host/DPU reporvisioning requested)\nAND need config bootorder
73A_Ready --> A_WaitingForDpusToUp : (Instance deleted OR Host/DPU reporvisioning requested)\nAND not need config bootorder\nAND Power is Off
74A_Ready --> A_BootingWithDiscoveryImage : (Instance deleted OR Host/DPU reporvisioning requested)\nAND not need config bootorder\nAND Power is On
75
76A_WaitingForDpusToUp --> A_BootingWithDiscoveryImage : DPUs UP-triggered
77A_WaitingForDpusToUp --> A_WaitingForDpusToUp : Not DPUs UP-triggered
78
79A_BootingWithDiscoveryImage --> A_BootingWithDiscoveryImage : Retry reboot if needed
80A_BootingWithDiscoveryImage --> A_SwitchToAdminNetwork : If instance deleted
81A_BootingWithDiscoveryImage --> DPUReprovision_dr_bfb_check_support : DPU reprovision needed
82A_BootingWithDiscoveryImage --> HostReprovision_HR_CheckingFirmware : Host reprovision needed
83A_BootingWithDiscoveryImage --> A_BootingWithDiscoveryImage : Nothing is needed. Stuck.
84
85DPUReprovision_DR_RebootHost --> A_Ready : Reprovision completed
86state "HostReprovision/hr_completed" as HostReprovision_hr_completed
87HostReprovision_hr_completed --> A_Ready : Reprovision not needed
88
89A_SwitchToAdminNetwork --> A_WaitingForNetworkReconfig : Update network config
90
91A_WaitingForNetworkReconfig --> A_WaitingForNetworkReconfig : Network not synced
92A_WaitingForNetworkReconfig --> a_release_instance : Delete instance & clean network config
93a_release_instance --> PostAssignedMeasuring_M_WaitingForMeasurements : attenstation enabled
94a_release_instance --> WaitingForCleanup_C_Init : attenstation disabled
95
96A_NCU_WaitingForNetworkSegmentToBeReady --> A_NCU_WaitingForConfigSynced : No segments\nOR All ready
97A_NCU_WaitingForNetworkSegmentToBeReady --> A_NCU_WaitingForNetworkSegmentToBeReady : Not all segments ready
98
99A_NCU_WaitingForConfigSynced --> A_NCU_ReleaseOldResources : No DPU\nOR DPU synced
100A_NCU_WaitingForConfigSynced --> A_NCU_WaitingForConfigSynced : Wait for DPU synced
101A_NCU_ReleaseOldResources --> A_Ready
102
103A_HPC_PowerCycle --> A_HPC_PowerCycle : Wait Power Off
104A_HPC_PowerCycle --> A_HPC_UH_DisableLockdown : Power On
105A_HPC_UH_DisableLockdown --> A_HPC_UH_RebootHost : BMC lockdown disabled
106A_HPC_UH_RebootHost --> A_HPC_UH_WaitForUefiBoot : ForceRestart issued
107A_HPC_UH_WaitForUefiBoot --> A_HPC_UH_WaitForUefiBoot : Waiting for UEFI boot (5 min)
108A_HPC_UH_WaitForUefiBoot --> A_HPC_CheckHostConfig : UEFI boot wait complete
109A_HPC_CheckHostConfig --> A_HPC_CheckHostConfig : Wait DPU Up
110A_HPC_CheckHostConfig --> A_HPC_ConfigureBios : Need config host boot order
111A_HPC_CheckHostConfig --> A_HPC_LockHost : No need config host boot order
112A_HPC_ConfigureBios --> A_HPC_PollingBiosSetup : Config BIOS
113A_HPC_PollingBiosSetup --> A_HPC_PollingBiosSetup : Wait for BIOS setup
114A_HPC_PollingBiosSetup --> A_HPC_SBO_SetBootOrder : BIOS is setup
115A_HPC_SBO_SetBootOrder --> A_HPC_SBO_WaitForSetBootOrderJobScheduled : Set boot order job scheduled
116A_HPC_SBO_WaitForSetBootOrderJobScheduled --> A_HPC_SBO_RebootHost : Job scheduled
117A_HPC_SBO_RebootHost --> A_HPC_SBO_WaitForSetBootOrderJobCompletion : Reboot
118A_HPC_SBO_WaitForSetBootOrderJobCompletion --> A_HPC_LockHost : Job completed
119A_HPC_LockHost --> A_WaitingForDpusToUp : BMC lockdown enabled
120
121state AnyState
122AnyState --> A_Failed : Any failure condition
123A_Failed --> A_Failed : Wait (stuck, manual action needed)
124@enduml

Host Reprovision State Details (HostReprovisionState)

Shows the host firmware reprovision process:

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7
8' ========================================
9' States
10'
11
12'' Incoming states
13state Ready
14state "Assigned/BootingWithDiscoveryImage" as Assigned_A_BootingWithDiscoveryImage
15
16'' Own states
17state "CheckingFirmware" as HR_CheckingFirmware
18state "CheckingFirmwareRepeat" as HR_CheckingFirmwareRepeat
19state "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}
24state "WaitingForScript" as HR_WaitingForScript
25state "WaitingForUpload" as HR_WaitingForUpload
26state "WaitingForFirmwareUpgrade" as HR_WaitingForFirmwareUpgrade
27state "ResetForNewFirmware" as HR_ResetForNewFirmware
28state "NewFirmwareReportedWait" as HR_NewFirmwareReportedWait
29state "FailedFirmwareUpgrade" as HR_FailedFirmwareUpgrade
30state hr_completed <<choice>>
31
32'' Outgoing states
33state "Assigned/Ready" as Assigned_A_Ready
34
35' ========================================
36' Transitions
37'
38Ready --> HR_CheckingFirmware : Host reprovision request
39Assigned_A_BootingWithDiscoveryImage --> HR_CheckingFirmware : Host reprovision request
40
41HR_CheckingFirmware --> HR_IR_Start : Firmware needs pre-update reset
42HR_IR_Start --> HR_IR_BMCWasReset : Power Off
43HR_IR_BMCWasReset --> HR_IR_WaitBoot : Power On
44HR_IR_WaitBoot --> HR_IR_WaitBoot : Wait 20 min
45HR_IR_WaitBoot --> HR_CheckingFirmwareRepeat
46HR_CheckingFirmware --> HR_WaitingForScript : Upgrade using script
47HR_WaitingForScript --> HR_CheckingFirmwareRepeat : Script completed
48HR_WaitingForScript --> HR_FailedFirmwareUpgrade : Script failed
49HR_CheckingFirmware --> HR_CheckingFirmwareRepeat : No explored endpoint data
50HR_CheckingFirmware --> hr_completed : FW info not found
51HR_CheckingFirmwareRepeat --> hr_completed : FW info not found
52HR_CheckingFirmware --> HR_WaitingForUpload
53HR_WaitingForUpload --> HR_CheckingFirmwareRepeat : No upload status upload error
54HR_WaitingForUpload --> HR_WaitingForFirmwareUpgrade : Upload success
55HR_WaitingForFirmwareUpgrade --> HR_WaitingForUpload : Update\nAND has more
56HR_WaitingForFirmwareUpgrade --> HR_ResetForNewFirmware : Updated last
57HR_WaitingForFirmwareUpgrade --> HR_CheckingFirmwareRepeat : Task interrupted\nOR get error
58HR_WaitingForFirmwareUpgrade --> HR_FailedFirmwareUpgrade : Unknown task status
59HR_ResetForNewFirmware --> HR_NewFirmwareReportedWait
60HR_NewFirmwareReportedWait --> hr_completed
61HR_FailedFirmwareUpgrade --> HR_FailedFirmwareUpgrade : Wait retry timeout
62HR_FailedFirmwareUpgrade --> HR_CheckingFirmware : Retry after timeout
63
64hr_completed --> Assigned_A_Ready : if Assigned state
65hr_completed --> Ready : if source is Ready state
66@enduml

DPU Reprovision State Details (DpuReprovisionState)

Shows the DPU firmware reprovision process:

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7' ========================================
8' States
9'
10
11'' Incoming states
12state Ready
13state "Assigned/BootingWithDiscoveryImage" as Assigned_A_BootingWithDiscoveryImage
14
15'' Own states
16state dr_bfb_check_support <<choice>>
17state BmcFirmwareUpgrade
18state "BmcFirmwareUpgrade" as DR_BmcFirmwareUpgrade
19state "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}
25state "FirmwareUpgrade" as DR_FirmwareUpgrade
26state "WaitingForNetworkInstall" as DR_WaitingForNetworkInstall
27state "PoweringOffHost" as DR_PoweringOffHost
28state "PowerDown" as DR_PowerDown
29state "BufferTime" as DR_BufferTime
30state "VerifyFirmareVersions" as DR_VerifyFirmareVersions
31state "WaitingForNetworkConfig" as DR_WaitingForNetworkConfig
32state "RebootHostBmc" as DR_RebootHostBmc
33state "RebootHost" as DR_RebootHost
34state "NotUnderReprovision" as DR_NotUnderReprovision
35
36'' Outgoing states
37state "Assigned/Ready" as Assigned_A_Ready
38state "HostInit/Discovered" as HostInit_HI_Discovered
39state "HostReprovision/CheckingFirmware" as HostReprovision_HR_CheckingFirmware
40
41' ========================================
42' Transitions
43'
44Ready --> dr_bfb_check_support : DPU reprovision request
45Assigned_A_BootingWithDiscoveryImage --> dr_bfb_check_support : DPU reprovision request
46
47dr_bfb_check_support --> DR_IDO_InstallingBFB : BFB install supported
48dr_bfb_check_support --> DR_WaitingForNetworkInstall : BFB install not supported
49
50DR_IDO_InstallingBFB --> DR_IDO_WaitForInstallComplete : Start update
51DR_IDO_WaitForInstallComplete --> DR_IDO_Completed : Task completed
52DR_IDO_WaitForInstallComplete --> DR_IDO_InstallationError : Task exception\nOR unknown state
53DR_IDO_WaitForInstallComplete --> DR_IDO_WaitForInstallComplete : Wait task completion
54DR_IDO_Completed --> DR_WaitingForNetworkInstall
55
56DR_BmcFirmwareUpgrade --> DR_FirmwareUpgrade : deprecated
57DR_FirmwareUpgrade --> DR_WaitingForNetworkInstall : deprecated
58DR_BufferTime --> DR_VerifyFirmareVersions : deprecated
59DR_WaitingForNetworkInstall --> DR_PoweringOffHost
60DR_PoweringOffHost --> DR_PoweringOffHost : wait all DPU ready
61DR_PoweringOffHost --> DR_PowerDown : DPUs ready
62DR_PowerDown --> DR_PowerDown : Wait Power off
63DR_PowerDown --> DR_VerifyFirmareVersions : Power is off
64DR_VerifyFirmareVersions --> DR_WaitingForNetworkConfig
65DR_WaitingForNetworkConfig --> DR_WaitingForNetworkConfig : Any DPU is not up\nOR network not synced
66DR_WaitingForNetworkConfig --> DR_RebootHostBmc
67DR_RebootHostBmc --> DR_RebootHost
68DR_RebootHost --> HostInit_HI_Discovered : if entered from Ready
69DR_RebootHost --> HostReprovision_HR_CheckingFirmware : if entered from Assigned\nAND host reprovision requested
70DR_RebootHost --> Assigned_A_Ready : if entered from Assigned\nAND host reprovision not requested
71@enduml

WaitingForCleanup State Details

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7' ========================================
8' States
9'
10
11'' Incoming states
12state "Assigned/A_WaitingForNetworkReconfig" as Assigned_A_WaitingForNetworkReconfig
13state Failed
14
15'' Own states
16state "Init" as C_Init
17state "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}
23state C_HostCleanup
24state 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}
32state "DisableBIOSBMCLockdown" as C_DisableBIOSBMCLockdown
33
34'' Outgoing states
35state "BomValidating/UpdatingInventory" as BomValidating_BV_UpdatingInventory
36
37' ========================================
38' Transitions
39'
40Failed --> C_Init
41Assigned_A_WaitingForNetworkReconfig --> C_Init
42C_Init --> C_SEB_UnlockHost : If Dell\nAND has Boss controller
43C_Init --> C_HostCleanup : If not Dell\nOR no Boss controller
44
45C_SEB_UnlockHost --> C_SEB_SecureEraseBoss
46C_SEB_SecureEraseBoss --> C_SEB_WaitForJobCompletion
47C_SEB_WaitForJobCompletion --> C_HostCleanup : Job success
48C_SEB_WaitForJobCompletion --> C_SEB_HandleJobFailure : Job fail
49C_SEB_WaitForJobCompletion --> C_SEB_WaitForJobCompletion : Wait job to complete
50C_SEB_HandleJobFailure --> C_SEB_HandleJobFailure : Power off\nOR Power on if needed
51C_SEB_HandleJobFailure --> C_SEB_SecureEraseBoss : Retry
52C_SEB_HandleJobFailure --> C_SEB_HandleJobFailure : Power cycle (Off / On)
53C_HostCleanup --> C_HostCleanup : Wait for cleanup
54C_HostCleanup --> C_SBV_CreateBossVolume : if Boss controller present
55C_HostCleanup --> BomValidating_BV_UpdatingInventory : if Boss controller not present
56
57C_SBV_CreateBossVolume --> C_SBV_WaitForJobScheduled
58C_SBV_WaitForJobScheduled --> C_SBV_RebootHost
59C_SBV_RebootHost --> C_SBV_WaitForJobCompletion
60C_SBV_WaitForJobCompletion --> C_SBV_HandleJobFailure : Job fail
61C_SBV_WaitForJobCompletion --> C_SBV_LockHost : Job success
62C_SBV_WaitForJobCompletion --> C_SBV_WaitForJobCompletion : Wait job to complete
63C_SBV_HandleJobFailure --> C_SBV_HandleJobFailure : Power off\nOR Power on if needed
64C_SBV_HandleJobFailure --> C_SBV_CreateBossVolume : Retry
65C_SBV_HandleJobFailure --> C_SBV_HandleJobFailure : Power cycle (Off / On)
66C_SBV_LockHost --> BomValidating_BV_UpdatingInventory
67@enduml

Measuring and PostAssignedMeasuring State Details

Shows the attestation measurement process.

1@startuml
2skinparam state {
3 BackgroundColor White
4 BorderColor Black
5}
6
7state "Assigned/WaitingForNetworkReconfig" as Assigned_A_WaitingForNetworkReconfig
8state Ready
9state "WaitingForMeasurements" as M_WaitingForMeasurements
10state "PendingBundle" as M_PendingBundle
11state m_return_success <<choice>>
12state Failed
13state "WaitingForCleanup/Init" as WaitingForCleanup_C_Init
14
15Ready --> M_WaitingForMeasurements : Redo measuring requested
16Assigned_A_WaitingForNetworkReconfig --> M_WaitingForMeasurements : On instance delete
17M_WaitingForMeasurements --> M_PendingBundle : Wait for golden values
18M_WaitingForMeasurements --> M_WaitingForMeasurements : Wait for measurements
19M_WaitingForMeasurements --> m_return_success : Measurements validated
20M_WaitingForMeasurements --> Failed : Measurements failed
21M_PendingBundle --> m_return_success : Measurements validated
22M_PendingBundle --> Failed : Measurements failed
23m_return_success --> Ready : if came from Ready state
24m_return_success --> WaitingForCleanup_C_Init : if came from Assigned state
25@enduml

Failed State

1@startuml
2left to right direction
3
4skinparam state {
5 BackgroundColor White
6 BorderColor Black
7}
8
9state AnyNotAssignedState
10state Failed
11state "HostInit/WaitingForLockdown/TimeWaitForDPUDown" as HostInit_HI_WaitingForLockdown_HI_WFL_TimeWaitForDPUDown
12state "WaitingForCleanup/Init" as WaitingForCleanup_C_Init
13state "HostInit/Measuring/WaitingForMeasurements" as HostInit_HI_Measuring_HI_M_WaitingForMeasurements
14state "Measuring/WaitingForMeasurements" as Measuring_M_WaitingForMeasurements
15state "PostAssignedMeasuring/WaitingForMeasurements" as PostAssignedMeasuring_M_WaitingForMeasurements
16state "Validation/RebootHost" as Validation_V_RebootHost
17state ForceDeletion
18
19AnyNotAssignedState --> Failed
20Failed --> HostInit_HI_WaitingForLockdown_HI_WFL_TimeWaitForDPUDown : Discovery Failure\nOn discovery succeeded
21Failed --> Failed : Reboot with retry count
22Failed --> WaitingForCleanup_C_Init : NVMECleanFailed\nCleaned up successfully after a failure
23Failed --> Measuring_M_WaitingForMeasurements : Measurements Fail\nNot in original failure cause anymore
24Failed --> HostInit_HI_Measuring_HI_M_WaitingForMeasurements : Measurements Fail\nNot in original failure cause anymore
25Failed --> PostAssignedMeasuring_M_WaitingForMeasurements : Measurements Fail\nNot in original failure cause anymore
26Failed --> Validation_V_RebootHost : MachineValidation Fail\nMachine validation requested
27Failed --> Failed : Non-recoverable cause
28Failed --> ForceDeletion : Admin force deletion
29@enduml