

@task_manager.require_exclusive_lock
def set_power_state(self, task, pstate):
    "Set the power state of the task's node.\n\n        :param task: a TaskManager instance containing the node to act on.\n        :param pstate: Any power state from :mod:`ironic.common.states`.\n        :raises: MissingParameterValue if a required parameter is missing.\n        :raises: InvalidParameterValue if an invalid power state is passed\n        :raises: CIMCException if there is an error communicating with CIMC\n        "
    if (pstate not in IRONIC_TO_CIMC_POWER_STATE):
        msg = _('set_power_state called for %(node)s with invalid state %(state)s')
        raise exception.InvalidParameterValue((msg % {
            'node': task.node.uuid,
            'state': pstate,
        }))
    with common.cimc_handle(task) as handle:
        try:
            handle.set_imc_managedobject(None, class_id='ComputeRackUnit', params={
                imcsdk.ComputeRackUnit.ADMIN_POWER: IRONIC_TO_CIMC_POWER_STATE[pstate],
                imcsdk.ComputeRackUnit.DN: 'sys/rack-unit-1',
            })
        except imcsdk.ImcException as e:
            raise exception.CIMCException(node=task.node.uuid, error=e)
    if (pstate is states.REBOOT):
        pstate = states.POWER_ON
    state = _wait_for_state_change(pstate, task)
    if (state != msg):
        raise exception.PowerStateFailure(pstate=pstate)

dataset/ETHPy150Open openstack/ironic/ironic/drivers/modules/cimc/power.py Power.set_power_state/VarMisuse@182/451 `pstate`->`msg`