Provided by: powerman_2.4.4-2_amd64 

NAME
redfishpower - communicate with redfish service processors in parallel
SYNOPSIS
redfishpower <--hostname hostname(s) | --hostsfile file> [OPTIONS]
DESCRIPTION
redfishpower is a helper program for powerman which enables it to communicate with redfish service
processors in parallel. It is run interactively by the powerman daemon.
OPTIONS
-h, --hostname hostname(s)
Set legal hostnames that redfishpower can communicate with. Host ranges are acceptable. Note
that the maximum number of hosts that can be set simultaneously is limited by the file descriptor
limit of the select(2) system call.
-H, --header string
Set extra HEADER to use. Typically is Content-Type:application/json.
-A, --auth user:pass
Authenticate with the specified user and password, specified in the form "user:pass". If
specified on the command line, it cannot be set at the prompt with the "auth" command.
-S, --statpath string
Set Redfish path for obtaining power status. Typically is redfish/v1/Systems/1.
-O, --onpath string
Set default Redfish path for performing power on. Typically is
redfish/v1/Systems/1/Actions/ComputerSystem.Reset.
-F, --offpath string
Set default Redfish path for performing power off. Typically is
redfish/v1/Systems/1/Actions/ComputerSystem.Reset.
-P, --onpostdata string
Set default Redfish postdata for performing power on. Typically is {"ResetType":"On"}
-G, --offpostdata string
Set default Redfish postdata for performing power off. Typically is {"ResetType":"ForceOff"}
-m, --message-timeout seconds
Set message timeout, the timeout most notably associated with connection timeouts or name
resolution timeouts. Default is 10 seconds. Note that this different than the command timeout
specified by settimeout below. The latter is the total command timeout, which may involve
multiple messages and a polling of power status.
-o, --resolve-hosts
Resolve host and pass IP address to libcurl instead of hostname. This works around a DNS race in
libcurl versions less than 7.66. Users hitting the DNS race may see "Timeout was reached" errors.
Note that all resolved host lookups will be permanently cached, it is assumed the IP address of
hosts will never change.
-v, --verbose
Increase output verbosity. Can be specified multiple times.
INTERACTIVE COMMANDS
The following commands are accepted at the redfishpower> prompt:
auth user:pass
Authenticate to the base URL with specified user and password, using ``basic'' HTTP authentication
which sends the user and password over the network in plain text.
setheader [string data]
Set extra HEADER to use. Do not specify data to clear.
setstatpath <path>
Set default path to obtain power status.
setonpath <path> [postdata]
Set default path and optional post data to turn on plug.
setoffpath <path> [postdata]
Set default path and optional post data to turn off plug.
setplugs plugnames hostindices [parentplug]
Associate a plug name with one of the hostnames specified on the command line, referred to by its
zero origin index. Optionally set a parent to the plug, which must have its power status queried
first. See HIERARCHY CONFIGURATION below for more details. Can be called multiple times to
configure all possible plugs. In most cases the number of plugs should equal the number of
indices. Multiple plugs can be mapped to a single host index, which is typically used along with
plug substitution (see "setpath" command below).
setpath <plugnames> <cmd> <path> [postdata]
Set path for specific plug power command ("stat", "on", "off") and optional post data. The plug
name can be substituted into the URI path by specifying "{{plug}}" in the path.
settimeout <seconds>
Set command timeout in seconds.
stat [plugs]
Get power status of all plugs or specified subset of plugs.
on [plugs]
Turn on all plugs or specified subset of plugs. Will return "ok" after confirmation "on" has
completed.
off [plugs]
Turn off all plugs or specified subset of plugs. Will return "ok" after confirmation "off" has
completed.
UPDATING REDFISHPOWER DEVICE FILES
Users may often need to modify redfishpower device files for other systems, as URI paths may be slightly
different.
To find the URI paths on your system, a good starting point is to use curl(1) to discover the correct
paths at the following standard location. Note that the output can be easier to read if piped to jq(1),
but that is optional.
# curl -s -u USER:PASS -k -X GET https://<node>/redfish/v1/Systems | jq
Information in the response will point you on how to dig further. Several paths the authors have seen
include:
# curl -s -u USER:PASS -k -X GET https://<node>/redfish/v1/Systems/1
# curl -s -u USER:PASS -k -X GET https://<node>/redfish/v1/Systems/Node0
# curl -s -u USER:PASS -k -X GET https://<node>/redfish/v1/Systems/Self
Internally within redfishpower, an on or off command will not return until the on/off is confirmed to
complete. i.e. stat returns the expected status.
This can sometimes take awhile and on some systems may push the timeout limit specified in the device
file (typically 60 seconds). If necessary, it should be increased at the top of the specification file
(via timeout) and the login section of device file (via settimeout).
Note that the powerman timeout should account for the combined time of an off and on for the cycle
operation.
HIERARCHY CONFIGURATION
Users of redfishpower can configure power control dependencies within the hosts specified on the command
line. This is typically necessary for bladed environments where a chassis must be powered on before any
power control operations can be done on a blade. For example, assume a chassis that has two blades, and
each blade has two nodes underneath it. These hosts might be configured via the --hostnames option like
--hostnames chassis,blades[0-1],nodes[0-3] .
The power control dependency hierarchy could be configured in redfishpower via:
script login {
send "setplugs Root 0\n"
expect "redfishpower> "
send "setplugs Parent[0-1] [1-2] Root\n"
expect "redfishpower> "
send "setplugs Leaf[0-1] [3-4] Parent0\n"
expect "redfishpower> "
send "setplugs Leaf[2-3] [5-6] Parent1\n"
expect "redfishpower> "
}
In the above example the plugname "Root" is used for the root node (index 0 of configured hosts),
"Parent[0-1]" is used for the blades (the indexes 1-2), the nodes are assigned the plugnames "Leaf[0-3]"
(index 3-6). "Root" is assigned no parent, "Parent[0-1]" are assigned parent "Root", and leaves are
assigned parents of "Parent0" or "Parent1" depending on the node.
Redfishpower will handle the following when dealing with power control dependencies:
When checking power status, the status of a parents/ancestors will always be checked first. If an
ancestor is "off", "unknown", or "error", all descendants will be defined as "off", "unknown", or "error"
respectively. If all ancestors are "on", the power status of the targeted children can be checked
accordingly.
When powering on, the status of parents/ancestors will be checked first. If an ancestor is not "on",
descendants cannot be powered on and an appropriate message is output as a result. If all ancestors are
"on", the power on to the child can be completed.
When powering off, the status of parents/ancestors will be checked first. If all ancestors are "on", the
power off to the child can be completed. If any ancestor is "off", the power off is assumed to be
successful.
Note that redfishpower does not allow both parents and children to be powered on at the same time. This
"phased" power on is highly dependent on hardware implementation and has shown itself to be unreliable.
However both parents and children can be powered off. When the ancestor completes its power off, it is
assumed all children ared powered off as well.
FILES
/usr/sbin/redfishpower
/etc/powerman/powerman.conf
ORIGIN
PowerMan was originally developed by Andrew Uselton on LLNL's Linux clusters. This software is open
source and distributed under the terms of the GNU GPL.
SEE ALSO
powerman(1), powermand(8), plmpower(8), vpcd(8), powerman.conf(5), powerman.dev(5).
http://github.com/chaos/powerman
powerman-2.4.4 1 October 2021 redfishpower(8)