diff options
author | Zuul <zuul@review.opendev.org> | 2020-07-19 16:41:29 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-07-19 16:41:29 +0000 |
commit | bcf2993dce1bd22e3a3ee03b961a3584593f4e64 (patch) | |
tree | 5da244ac047a4efa59af2229455b604927e4db97 | |
parent | 16b9d871177fb9334ca5185f2a87c5a1340893cd (diff) | |
parent | a4311fb70479619169d4e34c487acb0c1587129a (diff) | |
download | ironic-bcf2993dce1bd22e3a3ee03b961a3584593f4e64.tar.gz |
Merge "Add missing agent RAID compatibility for ilo5 and idrac" into stable/ussuri
-rw-r--r-- | ironic/drivers/drac.py | 8 | ||||
-rw-r--r-- | ironic/drivers/ilo.py | 8 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/test_drac.py | 17 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/test_ilo.py | 25 | ||||
-rw-r--r-- | releasenotes/notes/missing-sw-raid-b7fdc9259612970d.yaml | 5 |
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. |