{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img","link-external","admonition"]},"redocly_category":"Blog","type":"markdown"},"seo":{"title":"Master the Redfish server states","description":"Redfish is a standard RESTful API designed to deliver simple and secure management for converged, hybridIT and the Software Defined Data Center (SDDC)","meta":[{"name":"company_code","content":"hpe"},{"name":"hp_design_version","content":"hpe.1.0"},{"name":"lifecycle","content":"support.docs"},{"name":"robots","content":"index, follow"},{"name":"segment","content":"Segment Neutral"},{"name":"simple_title","content":"HPE server management with Redfish"},{"name":" target_country","content":"ww"},{"name":"user_profile","content":"Commercial.Technical End User"},{"name":"web_section_id","content":"R12305"}],"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"master-the-redfish-server-states","__idx":0},"children":["Master the Redfish server states"]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/fdz-photoprofile.f8842326599c8d88fc2a94018b733b269354e0b2144ebaa78e8a3db32b58c825.754a5336.png","alt":"François Donzé's profile photo","withLightbox":false,"style":{"borderRadius":"50px","boxShadow":"0 2px 12px rgba(0,0,0,0.25)"}},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"span","attributes":{"style":{"fontSize":"larger"}},"children":["François Donzé"]}," - Technical consultant, HPE"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["August 2018"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Updates: November 2024; October 2025"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"introduction","__idx":1},"children":["Introduction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Server management and monitoring often require the knowledge of the state of the managed servers (On, Off....). The"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.dmtf.org/standards/redfish","target":"_blank"},"children":["Redfish"]}," ","standard defines the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://redfish.dmtf.org/schemas/v1/ComputerSystem.v1_5_0.json","target":"_blank"},"children":["PowerState"]}," ","property with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Off"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["On"]}," as possible values. However, when the system is in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["On"]}," state, you may want to"," ","know in which sub-state the server is: Pre-OS Tasks (POST), Operating System (OS) running."," ","You may want to know, too, if the storage controllers or network cards have been discovered properly."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This blog presents the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#oem.hpe.poststate"},"children":[" property "]}," ","available in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Oem.Hpe"]}," extension of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ComputerSystem"]}," Redfish sub-tree of HPE servers (Gen9 and later)."," ","It presents as well the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeviceDiscoveryComplete"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#oem.hpe.devicediscoverycomplete"},"children":[" property "]},","," ","part of the same OEM extension and extremely important when you want to configure"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/references_and_material/blogposts/pldm/pldm_rde/pldm_rde","target":"_blank"},"children":["PLDM for RDE"]}," devices."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the last paragraph you will find a description of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BootProgress{}"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#bootprogress"},"children":[" object "]}," ","and its properties providing valuable information related to the OS boot progress."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"hpe-poststate","__idx":2},"children":["HPE PostState"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As mentioned in the"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://hewlettpackard.github.io/ilo-rest-api-docs/ilo4/#poststate","target":"_blank"},"children":["HPE iLO 4"]}," ","API Reference documents, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," property can have the following values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Null"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Unknown"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Reset"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PowerOff"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPost"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinishedPost"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#oem.hpe.poststate"},"children":[" Following HPE iLO generations "]}," ","have one more value: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryStart"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Since the first four values have a straight forward meaning, I'll focus only focus on the other ones."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPost"]}," value means that the server is still performing the Pre-OS Tasks (tests and hardware discovery). With a graphical console opened, when a server is in this state you can see a green progress bar:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/1-inpost.2f80bd8d19380266fd3a9c4e581c6d5f8c7aa9455b7aaef27570701bcf8f7223.b97bfacf.png","alt":"Figure 1: InPost state 1","title":"Figure1: InPost state 1"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"i","attributes":{},"children":["Figure 1: InPost state 1"]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/2-inpost.8dafbc0fd1974dbc9b01f986aa740b621f3e5542175a9727c58756067d94b587.b97bfacf.png","alt":"Figure 2: InPost state 2","title":"Figure 2: InPost state 2"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"i","attributes":{},"children":["Figure 2: InPost state 2"]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryStart"]}," follows the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPost"]}," state and then, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]},".  For the purpose of this blog, I'll assume that it corresponds to the state in which UEFI is loaded and running:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/3-inpostdiscoverycomplete.81d8b6a7179cff812917fa7a9a0420a1357d0870dc6480c721cfd02aa4ca06f6.b97bfacf.png","alt":"Figure3: InPostDiscoveryComplete / UEFI","title":"Figure3: InPostDiscoveryComplete / UEFI"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"i","attributes":{},"children":["Figure 3: InPostDiscoveryComplete / UEFI"]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Note that when an UEFI executable is running (i.e. UEFI Shell, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grubx64.efi"]},"...) the server stays in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," state."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The last possible value for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," key is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinishedPost"]},". In this state, the server is either booting an installed OS or has completely finished its boot process."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"poststate-use-cases","__idx":3},"children":["PostState use cases"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The first obvious use case for probing the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," of a server or a set of servers is in a  monitoring application."," ","Combined with the health status of the different components of the server, you will be able to draw dashboards or create reports."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In a server management and configuration context, several properties can only be modified when the server is in a particular state."," ","For example, the boot order can only be modified in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Off"]}," or in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinishedPost"]}," states."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the following screenshot I used"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/python-redfish-utility/releases/latest","target":"_blank"},"children":["iLOrest"]}," ","to change the next boot entry of a server being in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," state."," ","In this case, the iLO returns a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[400]"]}," error code with an explicit message."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/4-cannotchangebootorderwheninpost.63afdd1b802c73c3ad4790740eccff04694052c7ea7cf5dd659224c4153c006e.b97bfacf.png","alt":"Figure 4: Boot Order cannot be changed when in POST","title":"Figure 4: Boot Order cannot be changed when in POST"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"i","attributes":{},"children":["Figure 4: Boot Order cannot be changed when in POST"]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In a Bios and/or storage controller configuration process, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," property plays a crucial role. As explained in"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developer.hpe.com/blog/setting-bios-and-storage-controller-properties-with-redfish/","target":"_blank"},"children":["Setting Bios and Storage Controller Properties with Redfish"]}," ","this process is performed in two phases: 1 - parameter setup into a Redfish pending area. 2 - Reset / Cold Boot of the server to trigger a POST during which the new settings will be verified and transferred, if validated, from  the pending area into the active area."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the modifications are not validated during the second phase a message explaining the problem can be retrieved once the server"," ","is in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinishedPost"]}," states."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hence, as a best practice, it is wise to pool the managed nodes and check for possible error messages when they are in"," ","one of those states (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPost"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]},")."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-do-i-retrieve-the-server-state","__idx":4},"children":["How do I retrieve the Server State"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The easiest way to obtain the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," of a server is to issue the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["serverstate"]}," macro command of the"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/redfishclients/ilorest-userguide/ilocommands/#serverstate-command","target":"_blank"},"children":["iLOrest"]}," utility."," ","ILOrest automatically detects the generation of the server (Gen9, Gen10...) and fetches the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," value from the right Redfish URI."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/python-redfish-utility","target":"_blank"},"children":["Open Source"]}," version of iLOrest contains the source of this"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/python-redfish-utility/blob/master/src/extensions/iLO_COMMANDS/ServerStateCommand.py","target":"_blank"},"children":["ServerState"]}," ","macro command in Python. Feel free to consult it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/5-retrieveserverstatewithilorest.3eb9f8d7aba8c5e320e911d4cf3abcd604e7ebcbb536f844ee7e8000b0bdc665.b97bfacf.png","alt":"Figure 5: Retrieve `PostState` with iLOrest","title":"Figure 5: Retrieve `PostState` with iLOrest"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"i","attributes":{},"children":["Figure 5: Retrieve ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," with iLOrest"]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you decide to create your own Redfish client, you will have to adapt your code to the potential Redfish"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/redfishservices/ilos/ilo5/ilo5_adaptation/#ilo-5-data-model-changes","target":"_blank"},"children":["data model changes"]}," ","between the different generations of servers or iLOs."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a concrete example, in an HPE rack mount server the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," property has moved from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/redfish/v1/Systems/1/Oem/Hp"]}," in Gen9 models"," ","to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/redfish/v1/Systems/1/Oem/Hpe"]}," in Gen10s and later."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-devicediscoverycomplete-object","__idx":5},"children":["The DeviceDiscoveryComplete object"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PowerState"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," properties, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeviceDiscoveryComplete{}"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#oem.hpe.devicediscoverycomplete"},"children":[" object "]}," ","returns the states of the Agentless Management Service"," ","(",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://support.hpe.com/hpesc/public/docDisplay?docId=a00105236en_us&page=GUID-D47686D6-8CDF-4A49-9FC5-8895458A039E.html","target":"_blank"},"children":["AMS"]},"),"," ","SmartArrays (if any) and a third generic discovery state for all devices."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It may happen during startup that a system returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," while not all of its devices have been discovered, like"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/references_and_material/blogposts/pldm/pldm_rde/pldm_rde","target":"_blank"},"children":["PLDM for RDE"]}," ","capable devices."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following script polls every other second the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeviceDiscoveryComplete"]}," properties using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cURL"]}," Redfish client:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"let i=1\nwhile [ 1 ] ; do\n    echo $i\n    $CURL --silent --insecure -u ${ILO_USER}:${ILO_PASSWD}   \\\n        --request GET                                        \\\n        -H \"OData-Version: 4.0\"                              \\\n        https://${ILO_IP}/redfish/v1/Systems/1/              \\\n        | jq -r '.Oem.Hpe.PostState, .Oem.Hpe.DeviceDiscoveryComplete'\n    sleep 2\n    let i++\n    echo\ndone\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following picture shows three iterations of the above script during the start of a server. In iteration 55 the server is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPost"]}," while the SmartArray is in a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Cached"]}," state meaning that it will answer queries with cached data."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two seconds later the next iteration returns the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," state and shows the SmartArray in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Busy"]}," mode which means that it"," ","will return an error if queried during this state."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In iteration 62 we are still in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InPostDiscoveryComplete"]}," but both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeviceDiscovery"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SmartArrayDiscovery"]}," have reached their final ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Complete"]}," state."," ","Hence the the corresponding devices can be queried safely."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/6-devicediscoverycomplete.b95c7210500ae89c5bf1f6104b1fe5e6563e503c34517ad189ef46474376371b.b97bfacf.png","alt":"Figure 6: The `DeviceDiscoveryComplete{}` object","title":"Figure 6: The `DeviceDiscoveryComplete{}` object"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"i","attributes":{},"children":["Figure 6: The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeviceDiscoveryComplete{}"]}," object"]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If iLOrest is your preferred Redfish client tool, the above script looks like:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"let i=1\nu=\"ilo-user\"\np=\"ilo-password\"\nilo_ip=\"ilo-ip\"\nilorest login $ilo_ip -u $u -p $p\nwhile  [ 1 ] ; do\n    echo $i\n    ilorest get Oem/Hpe/PostState Oem/Hpe/DeviceDiscoveryComplete  \\\n            --select ComputerSystem. --refresh --json\n    sleep 2\n    let i++\n    echo\ndone\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-bootprogress-object","__idx":6},"children":["The BootProgress object"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Starting with HPE iLO 6 version 1.63 and later, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BootProgress{}"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#bootprogress"},"children":[" object "]}," ","is populated in the main"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ComputerSystem"]}," member, under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/redfish/v1/Systems/1"]},", when the BIOS/ROM is modern enough."," ","In previous versions, this object was populated"," ","only in ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/redfishservices/ilos/supplementdocuments/smartnics/","target":"_blank"},"children":["Data Processing Units (DPUs) and SmartNIC members"]},","," ","under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/redfish/v1/Systems/{item}"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["item > 1"]},"."," ","The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.hpe.com/psnow/doc/a50001239enw","target":"_blank"},"children":["Pensando"]}," device is an example of such DPU with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BootProgress{}"]}," populated."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HPE iLO 5 only populates this object for members under"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/redfish/v1/Systems/{item}"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["item > 1"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["LastState"]}," property of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BootProgress{}"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#bootprogress"},"children":[" object "]}," ","interesting values like:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SetupEntered"]},": The system has entered the setup utility"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OSRunning"]},": The operating system is running"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can monitor the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BootProgress.LastState"]}," property with the following iLOrest script:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"u=\"ilo-user\"\np=\"ilo-password\"\nip=\"ilo-ip\"\n\nilorest login $ip -u $u -p $p\nwhile [ 1 ] ; do\n    ilorest get BootProgress/LastState --select ComputerSystem. --refresh --json\n    sleep 3 ; echo\ndone\nilorest logout\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"conclusion","__idx":7},"children":["Conclusion"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The global Power state of HPE iLO based servers can be retrieved"," ","from the standard ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PowerState"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_chassis_resourcedefns121#powerstate"},"children":[" property "]},"."," ","However, this property may not be sufficient in all your management tasks."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In iLO 5 and later, additional sub states can be obtained from the OEM ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostState"]}," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/redfishservices/ilos/ilo5/ilo5_306/ilo5_computersystem_resourcedefns306/#oemhpepoststate"},"children":["property"]}," ","and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeviceDiscoveryComplete{}"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#oem.hpe.devicediscoverycomplete"},"children":[" resource "]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HPE iLO 6 and later feature the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BootProgress{}"]}," ",{"$$mdtype":"Tag","name":"LinkExternal","attributes":{"href":"/docs/redfishservices/ilos/ilo7/ilo7_121/ilo7_computersystem_resourcedefns121#bootprogress"},"children":[" object "]}," ","that provides a different view of the server states. Depending On"," ","your needs, choose the most suitable resource."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HPE provides as well a rich Redfish ecosystem including the free"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/python-redfish-utility/releases/latest","target":"_blank"},"children":["iLOrest tool"]},","," ","its ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/python-redfish-utility","target":"_blank"},"children":["Open Source"]}," version and a"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/python-ilorest-library","target":"_blank"},"children":["Python library"]},"."," ","PowerShell developers have the possibility to use a set of specific Redfish"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.powershellgallery.com/packages/HPRESTCmdlets/","target":"_blank"},"children":["Cmdlets"]}," ","required to run the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/HewlettPackard/PowerShell-ProLiant-SDK","target":"_blank"},"children":["GitHub ProLiant SDK"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Don't forget to check out other"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/references_and_material/blogposts/"},"children":["blog posts"]}," ","to learn more about Redfish tips and tricks."]}]},"headings":[{"value":"Master the Redfish server states","id":"master-the-redfish-server-states","depth":1},{"value":"Introduction","id":"introduction","depth":2},{"value":"HPE PostState","id":"hpe-poststate","depth":2},{"value":"PostState use cases","id":"poststate-use-cases","depth":2},{"value":"How do I retrieve the Server State","id":"how-do-i-retrieve-the-server-state","depth":2},{"value":"The DeviceDiscoveryComplete object","id":"the-devicediscoverycomplete-object","depth":2},{"value":"The BootProgress object","id":"the-bootprogress-object","depth":2},{"value":"Conclusion","id":"conclusion","depth":2}],"frontmatter":{"markdown":{"toc":{"hide":false,"depth":3},"lastUpdateBlock":{"hide":false}},"breadcrumbs":{"hide":true},"seo":{"title":"Master the Redfish server states"}},"lastModified":"2026-01-09T17:23:27.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/references_and_material/blogposts/etc/masterserverstates/masterserverstates","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}