
The PowerInterface methods set_power_state() and reboot() were enhanced to take a 'timeout' parameter [1]. To handle Interfaces that didn't support timeout, conductor.utils.node_power_action() used reflection.get_signature() to determine whether or not the node's PowerInterface's methods could handle a timeout parameter. It turns out that there was a bug with the ironic_lib.metrics.timer decorator [2], such that reflection.get_signature() did not return the method parameters. This means that for PowerInterfaces that had this decorator, the conductor would incorrectly think that 'timeout' was not supported, even if it were supported. Instead of trying to decide whether a PowerInterface supports 'timeout', the conductor now assumes that it does. This patch changes all in-tree PowerInterfaces so that they accept a 'timeout' parameter for reboot() and set_power_state(). For any out-of-tree implementations that don't accept a 'timeout' parameter, a TypeError exception will be raised. [1] f15d5b9a37260b3876f9dadeb030412e6e1053b2 [2] https://bugs.launchpad.net/ironic/+bug/1746730 Closes-Bug: #1746849 Change-Id: Iae28e94c34d4d69593644d0e5f4542558db9bb79
Team and repository tags
Ironic
Ironic consists of an API and plug-ins for managing and provisioning physical machines in a security-aware and fault-tolerant manner. It can be used with nova as a hypervisor driver, or standalone service using bifrost. By default, it will use PXE and IPMI to interact with bare metal machines. Ironic also supports vendor-specific plug-ins which may implement additional functionality.
Ironic is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.
Project resources
- Documentation: https://docs.openstack.org/ironic/latest
- Source: https://git.openstack.org/cgit/openstack/ironic
- Bugs: https://bugs.launchpad.net/ironic
- Wiki: https://wiki.openstack.org/wiki/Ironic
- APIs: https://developer.openstack.org/api-ref/baremetal/index.html
Project status, bugs, and requests for feature enhancements (RFEs) are tracked on Launchpad: https://launchpad.net/ironic
For information on how to contribute to ironic, see https://docs.openstack.org/ironic/latest/contributor