tree 8374354e4772cbcf2f3bd3246e5de669980592ec
parent cc0bb6f29171b8afb09bd663767ba36793110d5d
author Andrew Geissler <geissonator@yahoo.com> 1612818783 -0600
committer Andrew Geissler <geissonator@yahoo.com> 1614204692 -0600

hypervisor: add support to turn on

If the customer has requested the hypervisor stop at its Standby state
vs. booting all the way to Running, then a mechanism is needed to
request the hypervisor boot to Running. A common use case for IBM is
the system user has requested the hypervisor stop at Standby so some
manual debug can be performed and then they want to move the hypervisor
into the Running state so they can boot their operating system.

Asking the hypervisor to stop at Standby is done via the
BootSourceOverrideEnabled and BootSourceOverrideTarget properties under
the redfish/v1/Systems/system.

Utilize the ComputerSystem.Reset action for this. Similar to how
redfish/v1/Systems/system/Actions/ComputerSystem.Reset is utilized for
the overall system, implement a limited subset of it for the hypervisor
object.

Tested:
- Verified when phosphor-hypervisor-state-manager package is not
  installed that Redfish API returns same info it does currently
- Verified when phosphor-hypervisor-state-manager was installed that the
  hypervisor state was returned correctly, the Actions field was filled
  in, and a post to the Action with ResetType set to "On" was correctly
  propagated to RequestedHostTransition
- Verified that an invalid ResetType (i.e. "Off") returned the
  appropriate "invalid parameter" error message to the Redfish API
- Verified no new errors logged by Redfish validator on system with this
  hypervisor package installed

- Verify resource not found when hypervisor not enabled
curl -k -H "X-Auth-Token: $TOKEN" -X POST https://${BMC_IP}/redfish/v1/Systems/hypervisor/Actions/ComputerSystem.Reset -d '{"ResetType": "On"}'
{
  "error": {
    "@Message.ExtendedInfo": [
      {
        "@odata.type": "#Message.v1_1_1.Message",
        "Message": "The requested resource of type Actions named Reset was not found.",
        "MessageArgs": [
          "Actions",
          "Reset"
        ],
        "MessageId": "Base.1.8.1.ResourceNotFound",
        "MessageSeverity": "Critical",
        "Resolution": "Provide a valid resource identifier and resubmit the request."
      }
    ],
    "code": "Base.1.8.1.ResourceNotFound",
    "message": "The requested resource of type Actions named Reset was not found."
  }
}

- Verify ResourceNotFound returned when hypervisor not enabled
curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/Systems/hypervisor/ResetActionInfo
{
  "error": {
    "@Message.ExtendedInfo": [
      {
        "@odata.type": "#Message.v1_1_1.Message",
        "Message": "The requested resource of type hypervisor named ResetActionInfo was not found.",
        "MessageArgs": [
          "hypervisor",
          "ResetActionInfo"
        ],
        "MessageId": "Base.1.8.1.ResourceNotFound",
        "MessageSeverity": "Critical",
        "Resolution": "Provide a valid resource identifier and resubmit the request."
      }
    ],
    "code": "Base.1.8.1.ResourceNotFound",
    "message": "The requested resource of type hypervisor named ResetActionInfo was not found."
  }
}

- Verify input parameters validated
curl -k -H "X-Auth-Token: $TOKEN" -X POST https://${BMC_IP}/redfish/v1/Systems/hypervisor/Actions/ComputerSystem.Reset -d '{"ResetTypeInvalid": "On"}'
{
  "ResetTypeInvalid@Message.ExtendedInfo": [
    {
      "@odata.type": "#Message.v1_1_1.Message",
      "Message": "The property ResetTypeInvalid is not in the list of valid properties for the resource.",
      "MessageArgs": [
        "ResetTypeInvalid"
      ],
      "MessageId": "Base.1.8.1.PropertyUnknown",
      "MessageSeverity": "Warning",
      "Resolution": "Remove the unknown property from the request body and resubmit the request if the operation failed."
    }
  ]
}

curl -k -H "X-Auth-Token: $TOKEN" -X POST https://${BMC_IP}/redfish/v1/Systems/hypervisor/Actions/ComputerSystem.Reset -d '{"ResetType": "OnInvalid"}'
{
  "ResetType@Message.ExtendedInfo": [
    {
      "@odata.type": "#Message.v1_1_1.Message",
      "Message": "The value OnInvalid for the property ResetType is not in the list of acceptable values.",
      "MessageArgs": [
        "OnInvalid",
        "ResetType"
      ],
      "MessageId": "Base.1.8.1.PropertyValueNotInList",
      "MessageSeverity": "Warning",
      "Resolution": "Choose a value from the enumeration list that the implementation can support and resubmit the request if the operation failed."
    }
  ]
}

Change-Id: Ia7b4e78b7b0d907cc06eb3f20d51ff87b7dde564
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
