1b41aff0fSXiaochao Ma# Host Management with OpenBMC 298100205SJeremy Kerr 398100205SJeremy KerrThis document describes the host-management interfaces of the OpenBMC object 498100205SJeremy Kerrstructure, accessible over REST. 598100205SJeremy Kerr 6b41aff0fSXiaochao MaNote: Authentication 7b41aff0fSXiaochao Ma 8*f4febd00SPatrick WilliamsSee the details on authentication at 9*f4febd00SPatrick Williams[REST-cheatsheet](https://github.com/openbmc/docs/blob/master/REST-cheatsheet.md#establish-rest-connection-session). 10b41aff0fSXiaochao Ma 11b41aff0fSXiaochao MaThis document uses token based authentication method: 12b41aff0fSXiaochao Ma 13b41aff0fSXiaochao Ma``` 14b41aff0fSXiaochao Ma$ export bmc=xx.xx.xx.xx 15b41aff0fSXiaochao Ma$ export token=`curl -k -H "Content-Type: application/json" -X POST https://${bmc}/login -d '{"username" : "root", "password" : "0penBmc"}' | grep token | awk '{print $2;}' | tr -d '"'` 16b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/... 17b41aff0fSXiaochao Ma``` 18b41aff0fSXiaochao Ma 19b41aff0fSXiaochao Ma## Inventory 2098100205SJeremy Kerr 21*f4febd00SPatrick WilliamsThe system inventory structure is under the `/xyz/openbmc_project/inventory` 22*f4febd00SPatrick Williamshierarchy. 2398100205SJeremy Kerr 2498100205SJeremy KerrIn OpenBMC the inventory is represented as a path which is hierarchical to the 2598100205SJeremy Kerrphysical system topology. Items in the inventory are referred to as inventory 266ba5cff0SGunnar Millsitems and are not necessarily FRUs (field-replaceable units). If the system 27*f4febd00SPatrick Williamscontains one chassis, a motherboard, and a CPU on the motherboard, then the path 28*f4febd00SPatrick Williamsto that inventory item would be: 2998100205SJeremy Kerr 30b41aff0fSXiaochao Ma`inventory/system/chassis0/motherboard0/cpu0` 3198100205SJeremy Kerr 32*f4febd00SPatrick WilliamsThe properties associated with an inventory item are specific to that item. Some 33*f4febd00SPatrick Williamscommon properties are: 3498100205SJeremy Kerr 35*f4febd00SPatrick Williams- `Version`: A code version associated with this item. 36*f4febd00SPatrick Williams- `Present`: Indicates whether this item is present in the system (True/False). 37*f4febd00SPatrick Williams- `Functional`: Indicates whether this item is functioning in the system 38*f4febd00SPatrick Williams (True/False). 3998100205SJeremy Kerr 4098100205SJeremy KerrThe usual `list` and `enumerate` REST queries allow the system inventory 4198100205SJeremy Kerrstructure to be accessed. For example, to enumerate all inventory items and 4298100205SJeremy Kerrtheir properties: 4398100205SJeremy Kerr 44b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/inventory/enumerate 4598100205SJeremy Kerr 4698100205SJeremy KerrTo list the properties of one item: 4798100205SJeremy Kerr 48b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/inventory/system/chassis/motherboard 4998100205SJeremy Kerr 50b41aff0fSXiaochao Ma## Sensors 5198100205SJeremy Kerr 521781f86bSAndrew GeisslerThe system sensor structure is under the `/xyz/openbmc_project/sensors` 531781f86bSAndrew Geisslerhierarchy. 5498100205SJeremy Kerr 5598100205SJeremy KerrThis interface allows monitoring of system attributes like temperature or 5698100205SJeremy Kerraltitude, and are represented similar to the inventory, by object paths under 5798100205SJeremy Kerrthe top-level `sensors` object name. The path categorizes the sensor and shows 5898100205SJeremy Kerrwhat the sensor represents, but does not necessarily represent the physical 5998100205SJeremy Kerrtopology of the system. 6098100205SJeremy Kerr 6198100205SJeremy KerrFor example, all temperature sensors are under `sensors/temperature`. CPU 6298100205SJeremy Kerrtemperature sensors would be `sensors/temperature/cpu[n]`. 6398100205SJeremy Kerr 646ba5cff0SGunnar MillsThese are some common properties: 6598100205SJeremy Kerr 66*f4febd00SPatrick Williams- `Value`: Current value of the sensor 67*f4febd00SPatrick Williams- `Unit`: Unit of the value and "Critical" and "Warning" values 68*f4febd00SPatrick Williams- `Scale`: The scale of the value and "Critical" and "Warning" values 69*f4febd00SPatrick Williams- `CriticalHigh` & `CriticalLow`: Sensor device upper/lower critical threshold 701781f86bSAndrew Geissler bound 71*f4febd00SPatrick Williams- `CriticalAlarmHigh` & `CriticalAlarmLow`: True if the sensor has exceeded the 726ba5cff0SGunnar Mills critical threshold bound 73*f4febd00SPatrick Williams- `WarningHigh` & `WarningLow`: Sensor device upper/lower warning threshold 741781f86bSAndrew Geissler bound 75*f4febd00SPatrick Williams- `WarningAlarmHigh` & `WarningAlarmLow`: True if the sensor has exceeded the 766ba5cff0SGunnar Mills warning threshold bound 776ba5cff0SGunnar Mills 786ba5cff0SGunnar MillsA temperature sensor might look like: 796ba5cff0SGunnar Mills 80b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/sensors/temperature/ocp_zone 816ba5cff0SGunnar Mills { 826ba5cff0SGunnar Mills "data": { 83b41aff0fSXiaochao Ma "CriticalAlarmHigh": false, 84b41aff0fSXiaochao Ma "CriticalAlarmLow": false, 85b41aff0fSXiaochao Ma "CriticalHigh": 65000, 866ba5cff0SGunnar Mills "CriticalLow": 0, 87b41aff0fSXiaochao Ma "Functional": true, 88b41aff0fSXiaochao Ma "MaxValue": 0, 89b41aff0fSXiaochao Ma "MinValue": 0, 906ba5cff0SGunnar Mills "Scale": -3, 916ba5cff0SGunnar Mills "Unit": "xyz.openbmc_project.Sensor.Value.Unit.DegreesC", 92b41aff0fSXiaochao Ma "Value": 34625, 93b41aff0fSXiaochao Ma "WarningAlarmHigh": false, 94b41aff0fSXiaochao Ma "WarningAlarmLow": false, 95b41aff0fSXiaochao Ma "WarningHigh": 63000, 966ba5cff0SGunnar Mills "WarningLow": 0 976ba5cff0SGunnar Mills }, 986ba5cff0SGunnar Mills "message": "200 OK", 996ba5cff0SGunnar Mills "status": "ok" 1006ba5cff0SGunnar Mills } 1016ba5cff0SGunnar Mills 102*f4febd00SPatrick WilliamsNote the value of this sensor is 34.625C (34625 \* 10^-3). 10398100205SJeremy Kerr 10498100205SJeremy KerrUnlike IPMI, there are no "functional" sensors in OpenBMC; functional states are 10598100205SJeremy Kerrrepresented in the inventory. 10698100205SJeremy Kerr 10798100205SJeremy KerrTo enumerate all sensors in the system: 10898100205SJeremy Kerr 109b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/sensors/enumerate 11098100205SJeremy Kerr 11198100205SJeremy KerrList properties of one inventory item: 11298100205SJeremy Kerr 113b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/sensors/temperature/outlet 11498100205SJeremy Kerr 115b41aff0fSXiaochao Ma## Event Logs 11698100205SJeremy Kerr 1171781f86bSAndrew GeisslerThe event log structure is under the `/xyz/openbmc_project/logging/entry` 1181781f86bSAndrew Geisslerhierarchy. Each event is a separate object under this structure, referenced by 1191781f86bSAndrew Geisslernumber. 12098100205SJeremy Kerr 1216ba5cff0SGunnar MillsBMC and host firmware on POWER-based servers can report event logs to the BMC. 1221781f86bSAndrew GeisslerTypically, these event logs are reported in cases where host firmware cannot 1231781f86bSAndrew Geisslerstart the OS, or cannot reliably log to the OS. 12498100205SJeremy Kerr 1256ba5cff0SGunnar MillsThe properties associated with an event log are as follows: 12698100205SJeremy Kerr 127*f4febd00SPatrick Williams- `Message`: The type of event log (e.g. 128*f4febd00SPatrick Williams "xyz.openbmc_project.Inventory.Error.NotPresent"). 129*f4febd00SPatrick Williams- `Resolved` : Indicates whether the event has been resolved. 130*f4febd00SPatrick Williams- `Severity`: The level of problem ("Info", "Error", etc.). 131*f4febd00SPatrick Williams- `Timestamp`: The date of the event log in epoch time. 132*f4febd00SPatrick Williams- `Associations`: A URI to the failing inventory part. 13398100205SJeremy Kerr 1346ba5cff0SGunnar MillsTo list all reported event logs: 13598100205SJeremy Kerr 136b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/logging/entry 13798100205SJeremy Kerr { 13898100205SJeremy Kerr "data": [ 1396ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/3", 1406ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/2", 1416ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/1", 1426ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/7", 1436ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/6", 1446ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/5", 1456ba5cff0SGunnar Mills "/xyz/openbmc_project/logging/entry/4" 14698100205SJeremy Kerr ], 14798100205SJeremy Kerr "message": "200 OK", 14898100205SJeremy Kerr "status": "ok" 14998100205SJeremy Kerr } 15098100205SJeremy Kerr 15198100205SJeremy KerrTo read a specific event log: 15298100205SJeremy Kerr 153b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/logging/entry/1 15498100205SJeremy Kerr { 15598100205SJeremy Kerr "data": { 1566ba5cff0SGunnar Mills "AdditionalData": [ 157b41aff0fSXiaochao Ma "_PID=183" 1586ba5cff0SGunnar Mills ], 1596ba5cff0SGunnar Mills "Id": 1, 160b41aff0fSXiaochao Ma "Message": "xyz.openbmc_project.Common.Error.InternalFailure", 161b41aff0fSXiaochao Ma "Purpose": "xyz.openbmc_project.Software.Version.VersionPurpose.BMC", 162b41aff0fSXiaochao Ma "Resolved": false, 1636ba5cff0SGunnar Mills "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error", 164b41aff0fSXiaochao Ma "Timestamp": 1563191362822, 165b41aff0fSXiaochao Ma "Version": "2.8.0-dev-132-gd1c1b74-dirty", 166b41aff0fSXiaochao Ma "associations": [] 16798100205SJeremy Kerr }, 16898100205SJeremy Kerr "message": "200 OK", 16998100205SJeremy Kerr "status": "ok" 17098100205SJeremy Kerr } 17198100205SJeremy Kerr 172*f4febd00SPatrick WilliamsTo delete an event log (log 1 in this example), call the `Delete` method on the 173*f4febd00SPatrick Williamsevent: 17498100205SJeremy Kerr 175b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X POST -d '{"data" : []}' https://${bmc}/xyz/openbmc_project/logging/entry/1/action/Delete 17698100205SJeremy Kerr 177c8529037SGunnar MillsTo clear all event logs, call the top-level `DeleteAll` method: 17898100205SJeremy Kerr 179b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X POST -d '{"data" : []}' https://${bmc}/xyz/openbmc_project/logging/action/DeleteAll 18098100205SJeremy Kerr 181b41aff0fSXiaochao Ma## Host Boot Options 18298100205SJeremy Kerr 1836ba5cff0SGunnar MillsWith OpenBMC, the Host boot options are stored as D-Bus properties under the 184a6ea0d09SGunnar Mills`control/host0/boot` path. Properties include 185264d4e0fSKonstantin Aladyshev[`BootMode`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Boot/Mode.interface.yaml), 186264d4e0fSKonstantin Aladyshev[`BootSource`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Boot/Source.interface.yaml) 187*f4febd00SPatrick Williamsand if the host is based on x86 CPU also 188*f4febd00SPatrick Williams[`BootType`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Boot/Type.interface.yaml). 18998100205SJeremy Kerr 190*f4febd00SPatrick Williams- Set boot mode: 1914cd993e2SJoel Stanley 192b41aff0fSXiaochao Ma ``` 193264d4e0fSKonstantin Aladyshev $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/BootMode -d '{"data": "xyz.openbmc_project.Control.Boot.Mode.Modes.Regular"}' 194b41aff0fSXiaochao Ma ``` 195b41aff0fSXiaochao Ma 196*f4febd00SPatrick Williams- Set boot source: 197b41aff0fSXiaochao Ma 198b41aff0fSXiaochao Ma ``` 199264d4e0fSKonstantin Aladyshev $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/BootSource -d '{"data": "xyz.openbmc_project.Control.Boot.Source.Sources.Default"}' 200264d4e0fSKonstantin Aladyshev ``` 201264d4e0fSKonstantin Aladyshev 202*f4febd00SPatrick Williams- Set boot type (valid only if host is based on the x86 CPU): 203264d4e0fSKonstantin Aladyshev 204264d4e0fSKonstantin Aladyshev ``` 205264d4e0fSKonstantin Aladyshev $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/BootType -d '{"data": "xyz.openbmc_project.Control.Boot.Type.Types.EFI"}' 206264d4e0fSKonstantin Aladyshev ``` 207264d4e0fSKonstantin Aladyshev 208*f4febd00SPatrick WilliamsAlso there are boolean 209*f4febd00SPatrick Williams[`Enable`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Object/Enable.interface.yaml) 210*f4febd00SPatrick Williamsproperties that control if the boot source override is persistent or one-time, 211*f4febd00SPatrick Williamsand if the override is enabled or not. 212264d4e0fSKonstantin Aladyshev 213*f4febd00SPatrick Williams- Set boot override one-time flag: 214264d4e0fSKonstantin Aladyshev 215264d4e0fSKonstantin Aladyshev ``` 216264d4e0fSKonstantin Aladyshev $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/one_time/attr/Enabled -d '{"data": "true"}' 217264d4e0fSKonstantin Aladyshev ``` 218264d4e0fSKonstantin Aladyshev 219*f4febd00SPatrick Williams- Enable boot override: 220264d4e0fSKonstantin Aladyshev 221264d4e0fSKonstantin Aladyshev ``` 222264d4e0fSKonstantin Aladyshev $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/Enabled -d '{"data": "true"}' 223b41aff0fSXiaochao Ma ``` 224b41aff0fSXiaochao Ma 225b41aff0fSXiaochao Ma## Host State Control 2264cd993e2SJoel Stanley 2271781f86bSAndrew GeisslerThe host can be controlled through the `host` object. The object implements a 2281781f86bSAndrew Geisslernumber of actions including power on and power off. These correspond to the IPMI 2296ba5cff0SGunnar Mills`power on` and `power off` commands. 2304cd993e2SJoel Stanley 2316ba5cff0SGunnar MillsAssuming you have logged in, the following will power on the host: 2324cd993e2SJoel Stanley 2334cd993e2SJoel Stanley``` 234b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"data": "xyz.openbmc_project.State.Host.Transition.On"}' -X PUT https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition 2354cd993e2SJoel Stanley``` 2364cd993e2SJoel Stanley 2376ba5cff0SGunnar MillsTo power off the host: 2384cd993e2SJoel Stanley 2396ba5cff0SGunnar Mills``` 240b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"data": "xyz.openbmc_project.State.Host.Transition.Off"}' -X PUT https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition 2416ba5cff0SGunnar Mills``` 2426ba5cff0SGunnar Mills 2436ba5cff0SGunnar MillsTo issue a hard power off (accomplished by powering off the chassis): 2446ba5cff0SGunnar Mills 2456ba5cff0SGunnar Mills``` 246b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT -d '{"data":"xyz.openbmc_project.State.Chassis.Transition.Off"}' https://${bmc}//xyz/openbmc_project/state/chassis0/attr/RequestedPowerTransition 2476ba5cff0SGunnar Mills``` 2486ba5cff0SGunnar Mills 2496ba5cff0SGunnar MillsTo reboot the host: 2506ba5cff0SGunnar Mills 2516ba5cff0SGunnar Mills``` 252b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT -d '{"data":"xyz.openbmc_project.State.Host.Transition.Reboot"}' https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition 2536ba5cff0SGunnar Mills``` 2546ba5cff0SGunnar Mills 2556ba5cff0SGunnar MillsMore information about Host State Management can be found here: 2562bc8dac0SKonstantin Aladyshevhttps://github.com/openbmc/phosphor-dbus-interfaces/tree/master/yaml/xyz/openbmc_project/State 2577b31010eSMichael Tritz 258b41aff0fSXiaochao Ma## Host Clear GARD 2597b31010eSMichael Tritz 2607b31010eSMichael TritzOn OpenPOWER systems, the host maintains a record of bad or non-working 2617b31010eSMichael Tritzcomponents on the GARD partition. This record is referenced by the host on 2627b31010eSMichael Tritzsubsequent boots to determine which parts should be ignored. 2637b31010eSMichael Tritz 2647b31010eSMichael TritzThe BMC implements a function that simply clears this partition. This function 2657b31010eSMichael Tritzcan be called as follows: 2667b31010eSMichael Tritz 267*f4febd00SPatrick Williams- Method 1: From the BMC command line: 2687b31010eSMichael Tritz 2697b31010eSMichael Tritz ``` 2707b31010eSMichael Tritz busctl call org.open_power.Software.Host.Updater \ 2717b31010eSMichael Tritz /org/open_power/control/gard \ 2727b31010eSMichael Tritz xyz.openbmc_project.Common.FactoryReset Reset 2737b31010eSMichael Tritz ``` 2747b31010eSMichael Tritz 275*f4febd00SPatrick Williams- Method 2: Using the REST API: 2767b31010eSMichael Tritz 2777b31010eSMichael Tritz ``` 278b41aff0fSXiaochao Ma $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X POST -d '{"data":[]}' https://${bmc}/org/open_power/control/gard/action/Reset 2797b31010eSMichael Tritz ``` 2807b31010eSMichael Tritz 2817b31010eSMichael TritzImplementation: https://github.com/openbmc/openpower-pnor-code-mgmt 28284c1704bSAndrew Geissler 283b41aff0fSXiaochao Ma## Host Watchdog 28484c1704bSAndrew Geissler 28584c1704bSAndrew GeisslerThe host watchdog service is responsible for ensuring the host starts and boots 28684c1704bSAndrew Geisslerwithin a reasonable time. On host start, the watchdog is started and it is 28784c1704bSAndrew Geisslerexpected that the host will ping the watchdog via the inband interface 28884c1704bSAndrew Geisslerperiodically as it boots. If the host fails to ping the watchdog within the 28984c1704bSAndrew Geisslertimeout then the host watchdog will start a systemd target to go to the quiesce 29084c1704bSAndrew Geisslertarget. System settings will then determine the recovery behavior from that 29184c1704bSAndrew Geisslerstate, for example, attempting to reboot the system. 29284c1704bSAndrew Geissler 29384c1704bSAndrew GeisslerThe host watchdog utilizes the generic [phosphor-watchdog][1] repository. The 29484c1704bSAndrew Geisslerhost watchdog service provides 2 files as configuration options into 29584c1704bSAndrew Geisslerphosphor-watchdog: 29684c1704bSAndrew Geissler 29784c1704bSAndrew Geissler /lib/systemd/system/phosphor-watchdog@poweron.service.d/poweron.conf 29884c1704bSAndrew Geissler /etc/default/obmc/watchdog/poweron 29984c1704bSAndrew Geissler 30084c1704bSAndrew Geissler`poweron.conf` contains the "Conflicts" relationships to ensure the watchdog 30184c1704bSAndrew Geisslerservice is stopped at the correct times. `poweron` contains the required 30284c1704bSAndrew Geisslerinformation for phosphor-watchdog (more information on these can be found in the 30384c1704bSAndrew Geissler[phosphor-watchdog][1] repository). 30484c1704bSAndrew Geissler 30584c1704bSAndrew GeisslerThe 2 service files involved with the host watchdog are: 30684c1704bSAndrew Geissler 30784c1704bSAndrew Geissler phosphor-watchdog@poweron.service 30884c1704bSAndrew Geissler obmc-enable-host-watchdog@0.service 30984c1704bSAndrew Geissler 31084c1704bSAndrew Geissler`phosphor-watchdog@poweron` starts the host watchdog service and 311*f4febd00SPatrick Williams`obmc-enable-host-watchdog` starts the watchdog timer. Both are run as a part of 312*f4febd00SPatrick Williamsthe `obmc-host-startmin@.target`. Service dependencies ensure the service is 31384c1704bSAndrew Geisslerstarted before the enable is called. 31484c1704bSAndrew Geissler 31584c1704bSAndrew GeisslerThe default watchdog timeout can be found within the [dbus interface 31684c1704bSAndrew Geisslerspecification][2] (Interval property). 31784c1704bSAndrew Geissler 31884c1704bSAndrew GeisslerThe host controls the watchdog timeout and enable/disable once it starts. 31984c1704bSAndrew Geissler 32084c1704bSAndrew Geissler[1]: https://github.com/openbmc/phosphor-watchdog 321*f4febd00SPatrick Williams[2]: 322*f4febd00SPatrick Williams https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/State/Watchdog.interface.yaml 323