{
"Resources": [
{
"Uri": "/cli/v1/maintenance",
"Interfaces": [
{
"Type": "Patch",
"Description": "Operate with maintenance"
}
]
},
{
"Uri": "/cli/v1/maintenance/download",
"Interfaces": [
{
"Type": "Patch",
"Description": "Download files",
"Usage": "ipmcset -t maintenance -d download -v <option>",
"Confirm": {
"Condition": true,
"Description": "WARNING: The operation may overwrite firmware existed.\nContinue? [Y/N]:"
},
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"option": {
"Required": true,
"Type": "integer",
"Validator": [
{
"Type": "Enum",
"Formula": [
1
]
}
],
"Description": "\n 1 Download BIOS."
}
}
},
"RspBody": {
"option": "${ProcessingFlow[1]/Destination/TaskId}"
},
"ProcessingFlow": [
{
"Type": "Task",
"Path": "/bmc/kepler/Systems/1/BiosUpgradeService",
"Interface": "bmc.kepler.Systems.BiosUpgradeService",
"Name": "ExportBiosFirmware",
"Params": [],
"Destination": {
"TaskId": "TaskId"
},
"CallIf": {
"${ReqBody/option}": 1
}
}
],
"Echoes": [
"ipmcset/maintenance_download",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/biosprint",
"Interfaces": [
{
"Type": "Patch",
"Description": "BIOS print set",
"Usage": "ipmcset -t maintenance -d biosprint -v <option>",
"Confirm": {
"Condition": "${Statements/GetCondition()}",
"Description": "WARNING: Setting BIOS debug info enable will make system start slow.\nDo you want to continue?[Y/N]:"
},
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"option": {
"Required": true,
"Type": "integer",
"Validator": [
{
"Type": "Enum",
"Formula": [
1,
2
]
}
],
"Description": "\n 1 BIOS debug info enable\n 2 BIOS debug info enabled/disabled by BIOS setup menu"
}
}
},
"RspBody": {
"option": "${ReqBody/option}"
},
"Statements": {
"GetCondition": {
"Input": "${ReqBody/option}",
"Steps": [
{
"Type": "Switch",
"Formula": [
{
"Case": 1,
"To": true
},
{
"To": false
}
]
}
]
}
},
"ProcessingFlow": [
{
"Type": "Method",
"Path": "/bmc/kepler/Systems/1/Bios",
"Interface": "bmc.kepler.Systems.Bios",
"Name": "ImportBiosSetup",
"Params": [
"Setting",
"{'Attributes':{'SYSDBGLevel':'Enabled'}}"
],
"CallIf": {
"${ReqBody/option}": 1
}
},
{
"Type": "Method",
"Path": "/bmc/kepler/Systems/1/Bios",
"Interface": "bmc.kepler.Systems.Bios",
"Name": "ImportBiosSetup",
"Params": [
"Setting",
"{'Attributes':{'SYSDBGLevel':'Disabled'}}"
],
"CallIf": {
"${ReqBody/option}": 2
}
}
],
"Echoes": [
"ipmcset/maintenance_biosprint",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/upgradebios",
"Interfaces": [
{
"Type": "Patch",
"Description": "Upgrade bios component",
"Usage": "ipmcset -t maintenance -d upgradebios -v <filepath>",
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"filepath": {
"Required": true,
"Type": "string",
"Description": " e.g.: /tmp/image.hpm\nNote:\n 1.It can only be executed when OS is power-off.\n"
}
}
},
"RspBody": {
"GetRealUpgradePath": "${Statements/GetRealUpgradePath()}",
"PowerState": "${ProcessingFlow[4]/Destination/PowerState}",
"SoftwareName": "${ProcessingFlow[5]/Destination/SoftwareName}"
},
"Statements": {
"GetRealUpgradePath": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.upgrade.get_update_filepath(ReqBody.filepath)"
}
]
},
"IsFilePermitted": {
"Input": "${Statements/GetRealUpgradePath()}",
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.account.is_permitted(Context, Input[2], 'rw')"
}
]
},
"CheckFilePermitted": {
"Input": "${Statements/IsFilePermitted()}",
"Steps": [
{
"Type": "Script",
"Formula": "return Input or error(custom_messages.NoPrivilegeToOperateSpecifiedFile())"
}
]
},
"GetBiosUpgradeTable": {
"Steps": [
{
"Type": "Script",
"Formula": "return {IsOnlineForce = 'true'}"
}
]
}
},
"ProcessingFlow": [
{
"Type": "Task",
"Path": "/bmc/kepler/UpdateService",
"Interface": "bmc.kepler.UpdateService",
"Name": "StartUpgrade",
"Params": [
"${Statements/GetRealUpgradePath()[2]}",
{}
],
"CallIf": {
"${Statements/GetRealUpgradePath()[1]}": true,
"${Statements/CheckFilePermitted()}": true
}
},
{
"Type": "Property",
"Path": "/bmc/kepler/UpdateService/FirmwareInventory/Bios",
"Interface": "bmc.kepler.UpdateService.FirmwareInfo",
"Source": {
"Parameters": "${Statements/GetBiosUpgradeTable()}"
}
},
{
"Type": "List",
"Path": "/bmc/kepler/Systems/1/FruCtrl",
"Destination": {
"Members": "FruCtrlList"
}
},
{
"Type": "Property",
"Path": "${ProcessingFlow[3]/Destination/FruCtrlList[1]}",
"Interface": "bmc.kepler.Systems.FruCtrl",
"Destination": {
"PowerState": "PowerState"
}
},
{
"Type": "Property",
"Path": "/bmc/kepler/Managers/1/BMC",
"Interface": "bmc.kepler.Managers.BMC",
"Destination": {
"SoftwareName": "SoftwareName"
}
}
],
"Echoes": [
"ipmcset/maintenance_upgradebios",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/resetiME",
"Interfaces": [
{
"Type": "Patch",
"Description": "Reset ARM iME",
"Usage": "ipmcset -t maintenance -d resetiME",
"Confirm": {
"Condition": true,
"Description": "WARNING: The operation may have many adverse effects.\nDo you want to continue?[Y/N]:"
},
"RspBody": {
"Result": "${ProcessingFlow[1]/Destination/Result}"
},
"ProcessingFlow": [
{
"Type": "Method",
"Path": "/bmc/kepler/Systems/1/Pmu",
"Interface": "bmc.kepler.Systems.Pmu",
"Name": "Reset",
"Destination": {
"Result": "Result"
}
}
],
"Echoes": [
"ipmcset/maintenance_resetiME",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/poweronlock",
"Interfaces": [
{
"Type": "Patch",
"ResourceExist": {
"${Statements/UserPrivilege()}": true
},
"Usage": "ipmcset -t maintenance -d poweronlock -v clear [-s <systemid>]",
"ReqHeader": {
"SystemId": []
},
"Description": "Clear the power-on lock status.",
"Confirm": {
"Condition": true,
"Description": "WARNING: The operation may have many adverse effects.\nDo you want to continue? [Y/N]:"
},
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"clear": {
"Required": true,
"Type": "string",
"Validator": [
{
"Type": "Enum",
"Formula": [
"clear"
]
}
]
}
}
},
"RspBody": {
"TimeoutFlagClearList": "${Statements/GetTimeoutFlag()}",
"HostType": "${Statements/GetHostType()}"
},
"Statements": {
"UserPrivilege": {
"Steps": [
{
"Type": "Script",
"Formula": "local privilege = #Context.Privilege if privilege == 9 then return true else error(base_messages.InsufficientPrivilege()) end"
}
]
},
"GetTimeoutFlag": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.maintenance.getclear_timeoutFlag(ReqHeader.SystemId)"
}
]
},
"GetHostType": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.fructrl.get_hosttype()"
}
]
}
},
"Echoes": [
"ipmcset/maintenance_poweronlock"
]
}
]
},
{
"Uri": "/cli/v1/maintenance/ethlink",
"Interfaces": [
{
"Type": "Patch",
"Description": "Set ethernet port link status",
"Usage": "ipmcset -t maintenance -d ethlink -v eth[x] [enable|disable]",
"Confirm": {
"Condition": "${Statements/eth_name_is_valid()}",
"Description": "WARNING: This operation will ${ReqBody/state} ${ReqBody/eth_name}.\nDo you want to continue?[Y/N]:"
},
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"eth_name": {
"Required": true,
"Type": "string"
},
"state": {
"Required": true,
"Type": "string",
"Validator": [
{
"Type": "Enum",
"Formula": [
"enable",
"disable"
]
}
]
}
}
},
"RspBody": {
"EthName": "${ReqBody/eth_name}",
"State": "${ReqBody/state}",
"ParamValid": "${Statements/eth_name_is_valid()}",
"EthList": "${Statements/get_all_eth()[1]}"
},
"Statements": {
"eth_name_is_valid": {
"Input": "${ReqBody/eth_name}",
"Steps": [
{
"Type": "Switch",
"Formula": [
{
"Case": "eth0",
"To": true
},
{
"Case": "eth2",
"To": true
},
{
"To": false
}
]
}
]
},
"get_all_eth": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.bmc_network.get_all_eth(ReqBody.eth_name, ProcessingFlow[1].Destination.port_paths)"
}
]
},
"get_eth_state": {
"Input": "${ReqBody/state}",
"Steps": [
{
"Type": "Switch",
"Formula": [
{
"Case": "enable",
"To": true
},
{
"To": false
}
]
}
]
}
},
"ProcessingFlow": [
{
"Type": "List",
"Path": "/bmc/kepler/Managers/1/EthernetInterfaces",
"Interface": "bmc.kepler.Managers.EthernetInterfaces.MgmtPort",
"Destination": {
"Members": "port_paths"
}
},
{
"Type": "Method",
"Path": "/bmc/kepler/Managers/1/EthernetInterfaces",
"Interface": "bmc.kepler.Managers.EthernetInterfaces",
"Name": "SetEthState",
"Params": [
"${ReqBody/eth_name}",
"${Statements/get_eth_state()}"
],
"CallIf": {
"${Statements/eth_name_is_valid()}": true
}
}
],
"Echoes": [
"ipmcset/maintenance_ethlink",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/ipaddr",
"Interfaces": [
{
"Type": "Patch",
"Description": "Set maintenance ip address",
"Usage": "ipmcset -t maintenance -d ipaddr -v <ipaddr> <mask>",
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"ipaddr": {
"Type": "string",
"Required": true,
"Validator": [
{
"Type": "Regex",
"Formula": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$"
}
]
},
"mask": {
"Type": "string",
"Required": true,
"Validator": [
{
"Type": "Regex",
"Formula": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$"
}
]
}
}
},
"RspBody": {
"ipaddr": "${ReqBody/ipaddr}",
"mask": "${ReqBody/mask}"
},
"ProcessingFlow": [
{
"Type": "Method",
"Path": "/bmc/kepler/Managers/1/EthernetInterfaces/Ipv4",
"Interface": "bmc.kepler.Managers.EthernetInterfaces.Ipv4",
"Name": "SetDedicatedMaintIpMask",
"Params": [
"${ReqBody/ipaddr}",
"${ReqBody/mask}"
]
}
],
"Echoes": [
"ipmcset/maintenance_ipaddr",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/retiresystem",
"Interfaces": [
{
"Type": "Patch",
"Description": "Retire system",
"Usage": "ipmcset -t maintenance -d retiresystem -v <option>",
"Example": [
"ipmcset -t maintenance -d retiresystem -v 0",
"ipmcset -t maintenance -d retiresystem -v 1"
],
"Confirm": {
"Condition": true,
"Description": "This operation will permanently delete software and hardware data related to the system.\nBefore retiring system, please ensure that the OS has been powered off.\nDo you want to continue?[Y/N]:"
},
"Authentication": {
"Description": "Input your password:",
"Condition": true
},
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"option": {
"Type": "integer",
"Required": true,
"Description": "\n 0 Clear all logs.\n 1 Preserve sel log entries, maintenance logs, and fault diagnosis logs for troubleshooting.\n",
"Validator": [
{
"Type": "Enum",
"Formula": [
0,
1
]
}
]
}
}
},
"RspBody": {
"TaskId": "${ProcessingFlow[1]/Destination/TaskId}"
},
"Statements": {
"GetPreserveLog": {
"Input": "${ReqBody/option}",
"Steps": [
{
"Type": "Switch",
"Formula": [
{
"Case": 0,
"To": false
},
{
"Case": 1,
"To": true
}
]
}
]
}
},
"ProcessingFlow": [
{
"Type": "Method",
"Path": "/bmc/kepler/Systems/1/Product",
"Interface": "bmc.kepler.Systems.Product",
"Name": "RetireSystem",
"Params": [
"${Statements/GetPreserveLog()}"
],
"Destination": {
"TaskId": "TaskId"
}
}
],
"Echoes": [
"ipmcset/maintenance_retiresystem",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/callredfish",
"Interfaces": [
{
"Type": "Patch",
"Description": "callredfish",
"Usage": "ipmcset -t maintenance -d callredfish -v <uri> <method> <data> <header>",
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"uri": {
"Required": true,
"Type": "string",
"Validator": [
{
"Type": "Script",
"Formula": "if string.match(Input, '^/redfish') == nil or string.match(Input, '%.%/') ~= nil then local err = base_messages.PropertyValueFormatError(Input, 'uri') err.RelatedProperties = {'#/uri'} error(err) end return true"
}
],
"Description": "\n\tMust start with '/redfish'"
},
"method": {
"Type": "string",
"Required": true,
"Validator": [
{
"Type": "Enum",
"Formula": [
"GET","PATCH","POST","DELETE"
]
}
],
"Description": "\n\tMethod types are: GET, PATCH, POST, DELETE"
},
"data": {
"Type": "string",
"Required": true,
"Description": "\n\tMust be JSON character or null"
},
"header": {
"Type": "string",
"Required": true,
"Description": "\n\tMust be JSON character or null"
}
}
},
"RspBody": {
"PwdValid": "${Statements/GetAuthorization()}",
"RedfishValid": "${Statements/CallRedfish()}"
},
"Statements": {
"GetAuthorization": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.maintenance.get_authorization()"
}
]
},
"CallRedfish": {
"Input": "${Statements/GetAuthorization()}",
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.maintenance.call_redfish(Input, ReqBody.uri, ReqBody.method, ReqBody.data, ReqBody.header, Context.ClientIp)"
}
]
}
},
"Echoes": [
"ipmcset/maintenance_callredfish",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/importcsr",
"Interfaces": [
{
"Type": "Patch",
"Description": "Import CSR",
"Usage": "ipmcset -t maintenance -d importcsr -v <option> <filepath>",
"Confirm": {
"Condition": true,
"Description": "WARNING: The operation will overwrite eeprom and reset bmc.\nContinue? [Y/N]:"
},
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"option": {
"Required": true,
"Type": "string"
},
"filepath": {
"Required": true,
"Type": "string",
"Validator": [
{
"Type": "Regex",
"Formula": "^/tmp/.{1,246}\\.hpm$"
}
],
"Description": " e.g.: /tmp/image.hpm"
}
}
},
"RspBody": {
"GetRealUpgradePath": "${Statements/GetRealUpgradePath()}",
"TaskId": "${ProcessingFlow[1]/Destination/TaskId}"
},
"Statements": {
"GetRealUpgradePath": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.upgrade.get_update_filepath(ReqBody.filepath)"
}
]
},
"IsFilePermitted": {
"Input": "${Statements/GetRealUpgradePath()}",
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.account.is_permitted(Context, Input[2], 'rw')"
}
]
},
"CheckFilePermitted": {
"Input": "${Statements/IsFilePermitted()}",
"Steps": [
{
"Type": "Script",
"Formula": "return Input or error(custom_messages.NoPrivilegeToOperateSpecifiedFile())"
}
]
}
},
"ProcessingFlow": [
{
"Type": "Task",
"Path": "/bmc/kepler/UpdateService/Maintenance/Csr",
"Interface": "bmc.kepler.UpdateService.Maintenance",
"Name": "Import",
"Params": [
"${ReqBody/option}",
"${Statements/GetRealUpgradePath()[2]}"
],
"Destination": {
"TaskId": "TaskId"
},
"CallIf": {
"${Statements/GetRealUpgradePath()[1]}": true,
"${Statements/CheckFilePermitted()}": true
}
}
],
"Echoes": [
"ipmcset/maintenance_importcsr",
""
]
}
]
},
{
"Uri": "/cli/v1/maintenance/psualarmlatch",
"Interfaces": [
{
"Type": "Patch",
"Description": "Set the power supply alarm latch status",
"Usage": "ipmcset -t maintenance -d psualarmlatch -v <psu_slot> <state>",
"ReqBody": {
"Type": "object",
"Required": true,
"Properties": {
"psu_slot": {
"Required": false
},
"state": {
"Required": false
}
}
},
"RspBody": {
"MaxSlotNumber": "${Statements/GetMaxSlotNumber()}",
"Slot": "${Statements/GetSlotNumber()}",
"State": "${ReqBody/state}",
"CheckPSUAlarmLatchParams": "${Statements/CheckPSUAlarmLatchParams()}",
"SetPSUAlarmLatch": "${Statements/SetPSUAlarmLatch()}"
},
"Statements": {
"GetMaxSlotNumber": {
"Input": "${ProcessingFlow[1]/Destination/DeviceSpecication}",
"Steps": [
{
"Type": "Script",
"Formula": "for _, tab in ipairs(Input or {}) do if tab[1] == 'Psu' then return tab[2] end end return 1"
}
]
},
"CheckPSUAlarmLatchParams": {
"Input": "${Statements/GetMaxSlotNumber()}",
"Steps": [
{
"Type": "Script",
"Formula": "check_psu_alarm_latch_params.lua"
}
]
},
"SetPSUAlarmLatch": {
"Steps": [
{
"Type": "Plugin",
"Formula": "orchestrator.power.set_psu_alarm_latch(ProcessingFlow[2].Destination.Path, ReqBody.state)"
}
]
},
"GetSlotNumber": {
"Input": "${ReqBody/psu_slot}",
"Steps": [
{
"Type": "Convert",
"Formula": "StringToNumber"
}
]
}
},
"ProcessingFlow": [
{
"Type": "Property",
"Path": "/bmc/kepler/Chassis/1",
"Interface": "bmc.kepler.Chassis",
"Destination": {
"DeviceSpecication": "DeviceSpecication"
}
},
{
"Type": "Method",
"Path": "/bmc/kepler/MdbService",
"Interface": "bmc.kepler.Mdb",
"Name": "GetPath",
"Params": [
"bmc.kepler.Systems.PowerMgmt.OnePower",
{
"SlotNumber": "${Statements/GetSlotNumber()}"
},
false
],
"Destination": {
"Path": "Path"
},
"CallIf": {
"${Statements/CheckPSUAlarmLatchParams()}": true
}
}
],
"Echoes": [
"ipmcset/maintenance_psualarmlatch",
""
]
}
]
}
]
}