diff options
author | Naohiro Tamura <naohirot@jp.fujitsu.com> | 2016-07-29 14:12:52 +0900 |
---|---|---|
committer | Naohiro Tamura <naohirot@jp.fujitsu.com> | 2017-01-24 09:29:53 +0900 |
commit | c46b720036a3cb6c07b3c76913ede8cb02ecdae2 (patch) | |
tree | b01e44405e4da4443de4b0c57660efef2469f684 /ironic/drivers/modules/irmc/management.py | |
parent | 58d59db30fb5925bd3a7d326338cc57e44df04b5 (diff) | |
download | ironic-c46b720036a3cb6c07b3c76913ede8cb02ecdae2.tar.gz |
iRMC management driver for Inject NMI
This patch enhances iRMC management driver to support Inject NMI.
Partial-Bug: #1526226
Change-Id: Id9dde5094239f215297d350a78b005accbdd8be4
Diffstat (limited to 'ironic/drivers/modules/irmc/management.py')
-rw-r--r-- | ironic/drivers/modules/irmc/management.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ironic/drivers/modules/irmc/management.py b/ironic/drivers/modules/irmc/management.py index ea85d9216..7aac1683f 100644 --- a/ironic/drivers/modules/irmc/management.py +++ b/ironic/drivers/modules/irmc/management.py @@ -233,3 +233,26 @@ class IRMCManagement(ipmitool.IPMIManagement): return _get_sensors_data(task) elif sensor_method == 'ipmitool': return super(IRMCManagement, self).get_sensors_data(task) + + @METRICS.timer('IRMCManagement.inject_nmi') + @task_manager.require_exclusive_lock + def inject_nmi(self, task): + """Inject NMI, Non Maskable Interrupt. + + Inject NMI (Non Maskable Interrupt) for a node immediately. + + :param task: A TaskManager instance containing the node to act on. + :raises: IRMCOperationError on an error from SCCI + :returns: None + + """ + node = task.node + irmc_client = irmc_common.get_irmc_client(node) + try: + irmc_client(scci.POWER_RAISE_NMI) + except scci.SCCIClientError as err: + LOG.error( + _LE('iRMC Inject NMI failed for node %(node)s: %(err)s.'), + {'node': node.uuid, 'err': err}) + raise exception.IRMCOperationError( + operation=scci.POWER_RAISE_NMI, error=err) |