ipmitool driver doesn't support IPMI 1.5
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ironic |
Fix Released
|
High
|
Lucas Alvares Gomes |
Bug Description
I got access to 2 machines where commands with IPMI 2.0 (-I lanplus) doesn't work, e.g
$ ipmitool -I lanplus -H X.X.X.X -L ADMINISTRATOR -U *** -R 12 -N 5 -P *** power status
ipmitool: lanplus.c:2177: ipmi_lanplus_
Aborted (core dumped)
But IPMI 1.5 (-I lan) works fine:
$ ipmitool -I lan -H X.X.X.X -L ADMINISTRATOR -U *** -R 12 -N 5 -P *** power status
Chassis Power is on
The Ironic node for that machine couldn't sync the power state and enters maintenance mode after a while
$ ironic node-show 06f3c639-
...
| target_power_state | None |
| last_error | During sync_power_state, max retries exceeded for node 06f3c639-8d56 |
| | -4f9d-b8dd-
| | 'None'. Updating DB state to 'None' Switching node to maintenance mode. |
| maintenance_reason | During sync_power_state, max retries exceeded for node 06f3c639-8d56 |
| | -4f9d-b8dd-
| | 'None'. Updating DB state to 'None' Switching node to maintenance mode. |
| target_
| maintenance | True |
| power_state | None |
| driver | pxe_ipmitool |
I couldn't find any workaround for the problem apart from changing the code ipmitool driver code replacing "-I lan" instead of "-I lanplus".
My suggestion is to offer a configuration option per node (node's driver_info) to tell the ipmitool driver to use IPMI 1.5 instead of IPMI 2.0.
I don't foresee the driver automatically falling back to 1.5 if the command fails because ipmitool doesn't return a meaningful message for such failure
Changed in ironic: | |
assignee: | nobody → Lucas Alvares Gomes (lucasagomes) |
importance: | Undecided → Medium |
description: | updated |
description: | updated |
description: | updated |
Changed in ironic: | |
status: | Triaged → In Progress |
Changed in ironic: | |
status: | In Progress → Fix Committed |
Changed in ironic: | |
milestone: | none → 4.0.0 |
status: | Fix Committed → Fix Released |
Importance high, as it breaks deployment, and there's no work around.