iRMC: Support ipmitool power interface with irmc hardware

Irmc power interface requires a vendor agent on an instance for
enabling soft reboot and soft power off. For a case where the agent is
not installed, this patch enables ipmitool power interface with irmc
hardware type.

Change-Id: I9bbe702645ba2a8ddbc0cf825b00999568f384c5
Story: 2002595
Task:  22206
This commit is contained in:
Hironori Shiina 2018-06-18 15:50:17 +09:00
parent ce9bdbffb1
commit aaf17eb5e7
4 changed files with 32 additions and 6 deletions

View File

@ -62,8 +62,8 @@ hardware interfaces:
Supports only ``irmc``.
* power
Supports only ``irmc``, which enables power control via ServerView Common
Command Interface (SCCI).
Supports ``irmc``, which enables power control via ServerView Common
Command Interface (SCCI), by default. Also supports ``ipmitool``.
For other hardware interfaces, ``irmc`` hardware type supports the
Bare Metal reference interfaces. For more details about the hardware
@ -653,7 +653,8 @@ This driver supports FUJITSU PRIMERGY BX S4 or RX S8 servers and above.
- PRIMERGY BX924 S4
- PRIMERGY RX300 S8
Soft Reboot (Graceful Reset) and Soft Power Off (Graceful Power Off)
are only available if `ServerView agents <http://manuals.ts.fujitsu.com/index.php?id=5406-5873-5925-5945-16159>`_
When ``irmc`` power interface is used, Soft Reboot (Graceful Reset) and Soft
Power Off (Graceful Power Off) are only available if
`ServerView agents <http://manuals.ts.fujitsu.com/index.php?id=5406-5873-5925-5945-16159>`_
are installed. See `iRMC S4 Manual <http://manuals.ts.fujitsu.com/index.php?id=5406-5873-5925-5988>`_
for more details.

View File

@ -134,4 +134,4 @@ class IRMCHardware(generic.GenericHardware):
@property
def supported_power_interfaces(self):
"""List of supported power interfaces."""
return [power.IRMCPower]
return [power.IRMCPower, ipmitool.IPMIPower]

View File

@ -127,7 +127,7 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
enabled_deploy_interfaces=['iscsi', 'direct'],
enabled_inspect_interfaces=['irmc'],
enabled_management_interfaces=['irmc'],
enabled_power_interfaces=['irmc'],
enabled_power_interfaces=['irmc', 'ipmitool'],
enabled_raid_interfaces=['no-raid', 'agent'],
enabled_rescue_interfaces=['no-rescue', 'agent'])
@ -199,3 +199,24 @@ class IRMCHardwareTestCase(db_base.DbTestCase):
agent.AgentRAID)
self.assertIsInstance(task.driver.rescue,
agent.AgentRescue)
def test_override_with_ipmitool_power(self):
node = obj_utils.create_test_node(
self.context, driver='irmc', power_interface='ipmitool')
with task_manager.acquire(self.context, node.id) as task:
self.assertIsInstance(task.driver.boot,
irmc.boot.IRMCVirtualMediaBoot)
self.assertIsInstance(task.driver.console,
ipmitool.IPMISocatConsole)
self.assertIsInstance(task.driver.deploy,
iscsi_deploy.ISCSIDeploy)
self.assertIsInstance(task.driver.inspect,
irmc.inspect.IRMCInspect)
self.assertIsInstance(task.driver.management,
irmc.management.IRMCManagement)
self.assertIsInstance(task.driver.power,
ipmitool.IPMIPower)
self.assertIsInstance(task.driver.raid,
noop.NoRAID)
self.assertIsInstance(task.driver.rescue,
noop.NoRescue)

View File

@ -0,0 +1,4 @@
---
features:
- |
Adds support for ``ipmitool`` power interface to ``irmc`` hardware type.