summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-07-19 16:41:29 +0000
committerGerrit Code Review <review@openstack.org>2020-07-19 16:41:29 +0000
commitbcf2993dce1bd22e3a3ee03b961a3584593f4e64 (patch)
tree5da244ac047a4efa59af2229455b604927e4db97
parent16b9d871177fb9334ca5185f2a87c5a1340893cd (diff)
parenta4311fb70479619169d4e34c487acb0c1587129a (diff)
downloadironic-bcf2993dce1bd22e3a3ee03b961a3584593f4e64.tar.gz
Merge "Add missing agent RAID compatibility for ilo5 and idrac" into stable/ussuri
-rw-r--r--ironic/drivers/drac.py8
-rw-r--r--ironic/drivers/ilo.py8
-rw-r--r--ironic/tests/unit/drivers/test_drac.py17
-rw-r--r--ironic/tests/unit/drivers/test_ilo.py25
-rw-r--r--releasenotes/notes/missing-sw-raid-b7fdc9259612970d.yaml5
5 files changed, 38 insertions, 25 deletions
diff --git a/ironic/drivers/drac.py b/ironic/drivers/drac.py
index 430105eae..453f17876 100644
--- a/ironic/drivers/drac.py
+++ b/ironic/drivers/drac.py
@@ -25,7 +25,6 @@ from ironic.drivers.modules.drac import management
from ironic.drivers.modules.drac import power
from ironic.drivers.modules.drac import raid
from ironic.drivers.modules.drac import vendor_passthru
-from ironic.drivers.modules import inspector
from ironic.drivers.modules import ipxe
from ironic.drivers.modules import noop
from ironic.drivers.modules import pxe
@@ -69,13 +68,14 @@ class IDRACHardware(generic.GenericHardware):
# if it is enabled by an operator (implying that the service is
# installed).
return [drac_inspect.DracWSManInspect, drac_inspect.DracInspect,
- drac_inspect.DracRedfishInspect, inspector.Inspector,
- noop.NoInspect]
+ drac_inspect.DracRedfishInspect] + super(
+ IDRACHardware, self).supported_inspect_interfaces
@property
def supported_raid_interfaces(self):
"""List of supported raid interfaces."""
- return [raid.DracWSManRAID, raid.DracRAID, noop.NoRAID]
+ return [raid.DracWSManRAID, raid.DracRAID] + super(
+ IDRACHardware, self).supported_raid_interfaces
@property
def supported_vendor_interfaces(self):
diff --git a/ironic/drivers/ilo.py b/ironic/drivers/ilo.py
index 87fb19cba..4b824fffc 100644
--- a/ironic/drivers/ilo.py
+++ b/ironic/drivers/ilo.py
@@ -24,7 +24,6 @@ from ironic.drivers.modules.ilo import management
from ironic.drivers.modules.ilo import power
from ironic.drivers.modules.ilo import raid
from ironic.drivers.modules.ilo import vendor
-from ironic.drivers.modules import inspector
from ironic.drivers.modules import noop
@@ -53,8 +52,8 @@ class IloHardware(generic.GenericHardware):
@property
def supported_inspect_interfaces(self):
"""List of supported inspect interfaces."""
- return [inspect.IloInspect, inspector.Inspector,
- noop.NoInspect]
+ return [inspect.IloInspect] + super(
+ IloHardware, self).supported_inspect_interfaces
@property
def supported_management_interfaces(self):
@@ -81,7 +80,8 @@ class Ilo5Hardware(IloHardware):
@property
def supported_raid_interfaces(self):
"""List of supported raid interfaces."""
- return [raid.Ilo5RAID, noop.NoRAID]
+ return [raid.Ilo5RAID] + super(
+ Ilo5Hardware, self).supported_raid_interfaces
@property
def supported_management_interfaces(self):
diff --git a/ironic/tests/unit/drivers/test_drac.py b/ironic/tests/unit/drivers/test_drac.py
index 748c5e466..8a551070b 100644
--- a/ironic/tests/unit/drivers/test_drac.py
+++ b/ironic/tests/unit/drivers/test_drac.py
@@ -12,6 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from oslo_utils import uuidutils
+
from ironic.conductor import task_manager
from ironic.drivers.modules import agent
from ironic.drivers.modules import drac
@@ -42,7 +44,7 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
'no-inspect'],
enabled_network_interfaces=['flat', 'neutron', 'noop'],
enabled_raid_interfaces=[
- 'idrac', 'idrac-wsman', 'no-raid'],
+ 'idrac', 'idrac-wsman', 'no-raid', 'agent'],
enabled_vendor_interfaces=[
'idrac', 'idrac-wsman', 'no-vendor'],
enabled_bios_interfaces=[
@@ -108,11 +110,14 @@ class IDRACHardwareTestCase(db_base.DbTestCase):
inspect=inspector.Inspector)
def test_override_with_raid(self):
- node = obj_utils.create_test_node(self.context, driver='idrac',
- raid_interface='no-raid')
- with task_manager.acquire(self.context, node.id) as task:
- self._validate_interfaces(task.driver,
- raid=noop.NoRAID)
+ for iface, impl in [('agent', agent.AgentRAID),
+ ('no-raid', noop.NoRAID)]:
+ node = obj_utils.create_test_node(self.context,
+ uuid=uuidutils.generate_uuid(),
+ driver='idrac',
+ raid_interface=iface)
+ with task_manager.acquire(self.context, node.id) as task:
+ self._validate_interfaces(task.driver, raid=impl)
def test_override_no_vendor(self):
node = obj_utils.create_test_node(self.context, driver='idrac',
diff --git a/ironic/tests/unit/drivers/test_ilo.py b/ironic/tests/unit/drivers/test_ilo.py
index ac719b763..3e8526436 100644
--- a/ironic/tests/unit/drivers/test_ilo.py
+++ b/ironic/tests/unit/drivers/test_ilo.py
@@ -16,10 +16,11 @@
Test class for iLO Drivers
"""
+from oslo_utils import uuidutils
+
from ironic.conductor import task_manager
from ironic.drivers import ilo
from ironic.drivers.modules import agent
-from ironic.drivers.modules.ilo import management
from ironic.drivers.modules.ilo import raid
from ironic.drivers.modules import inspector
from ironic.drivers.modules import iscsi_deploy
@@ -187,16 +188,6 @@ class Ilo5HardwareTestCase(db_base.DbTestCase):
def test_default_interfaces(self):
node = obj_utils.create_test_node(self.context, driver='ilo5')
with task_manager.acquire(self.context, node.id) as task:
- self.assertIsInstance(task.driver.raid, raid.Ilo5RAID)
- self.assertIsInstance(task.driver.management,
- management.Ilo5Management)
-
- def test_override_with_no_raid(self):
- self.config(enabled_raid_interfaces=['no-raid', 'ilo5'])
- node = obj_utils.create_test_node(self.context, driver='ilo5',
- raid_interface='no-raid')
- with task_manager.acquire(self.context, node.id) as task:
- self.assertIsInstance(task.driver.raid, noop.NoRAID)
self.assertIsInstance(task.driver.boot,
ilo.boot.IloVirtualMediaBoot)
self.assertIsInstance(task.driver.console,
@@ -209,7 +200,19 @@ class Ilo5HardwareTestCase(db_base.DbTestCase):
ilo.management.IloManagement)
self.assertIsInstance(task.driver.power,
ilo.power.IloPower)
+ self.assertIsInstance(task.driver.raid, raid.Ilo5RAID)
self.assertIsInstance(task.driver.rescue,
noop.NoRescue)
self.assertIsInstance(task.driver.vendor,
ilo.vendor.VendorPassthru)
+
+ def test_override_raid(self):
+ self.config(enabled_raid_interfaces=['agent', 'no-raid', 'ilo5'])
+ for iface, impl in [('agent', agent.AgentRAID),
+ ('no-raid', noop.NoRAID)]:
+ node = obj_utils.create_test_node(self.context,
+ uuid=uuidutils.generate_uuid(),
+ driver='ilo5',
+ raid_interface=iface)
+ with task_manager.acquire(self.context, node.id) as task:
+ self.assertIsInstance(task.driver.raid, impl)
diff --git a/releasenotes/notes/missing-sw-raid-b7fdc9259612970d.yaml b/releasenotes/notes/missing-sw-raid-b7fdc9259612970d.yaml
new file mode 100644
index 000000000..0b90cfda7
--- /dev/null
+++ b/releasenotes/notes/missing-sw-raid-b7fdc9259612970d.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixes missing ``agent`` RAID compatibility for the ``ilo5`` and ``idrac``
+ hardware type preventing software RAID for working with them.