summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit/drivers')
-rw-r--r--ironic/tests/unit/drivers/modules/ansible/test_deploy.py8
-rw-r--r--ironic/tests/unit/drivers/modules/network/test_common.py3
-rw-r--r--ironic/tests/unit/drivers/modules/network/test_flat.py1
-rw-r--r--ironic/tests/unit/drivers/modules/network/test_noop.py1
-rw-r--r--ironic/tests/unit/drivers/modules/storage/test_cinder.py64
-rw-r--r--ironic/tests/unit/drivers/modules/test_deploy_utils.py54
-rw-r--r--ironic/tests/unit/drivers/test_fake_hardware.py (renamed from ironic/tests/unit/drivers/test_fake.py)20
-rw-r--r--ironic/tests/unit/drivers/test_generic.py6
-rw-r--r--ironic/tests/unit/drivers/test_utils.py63
9 files changed, 81 insertions, 139 deletions
diff --git a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py
index 6c21dc76e..e2eacb71b 100644
--- a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py
+++ b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py
@@ -55,10 +55,10 @@ class AnsibleDeployTestCaseBase(db_base.DbTestCase):
def setUp(self):
super(AnsibleDeployTestCaseBase, self).setUp()
- self.config(enabled_hardware_types='manual-management',
- enabled_deploy_interfaces='ansible',
- enabled_power_interfaces='fake',
- enabled_management_interfaces='fake')
+ self.config(enabled_hardware_types=['manual-management'],
+ enabled_deploy_interfaces=['ansible'],
+ enabled_power_interfaces=['fake'],
+ enabled_management_interfaces=['fake'])
node = {
'driver': 'manual-management',
'instance_info': INSTANCE_INFO,
diff --git a/ironic/tests/unit/drivers/modules/network/test_common.py b/ironic/tests/unit/drivers/modules/network/test_common.py
index a68867244..ac9d4e4a4 100644
--- a/ironic/tests/unit/drivers/modules/network/test_common.py
+++ b/ironic/tests/unit/drivers/modules/network/test_common.py
@@ -29,7 +29,6 @@ class TestCommonFunctions(db_base.DbTestCase):
def setUp(self):
super(TestCommonFunctions, self).setUp()
- self.config(enabled_drivers=['fake'])
self.node = obj_utils.create_test_node(self.context,
network_interface='neutron')
self.port = obj_utils.create_test_port(
@@ -436,7 +435,6 @@ class TestVifPortIDMixin(db_base.DbTestCase):
def setUp(self):
super(TestVifPortIDMixin, self).setUp()
- self.config(enabled_drivers=['fake'])
self.interface = common.VIFPortIDMixin()
self.node = obj_utils.create_test_node(self.context,
network_interface='neutron')
@@ -660,7 +658,6 @@ class TestNeutronVifPortIDMixin(db_base.DbTestCase):
def setUp(self):
super(TestNeutronVifPortIDMixin, self).setUp()
- self.config(enabled_drivers=['fake'])
self.interface = common.NeutronVIFPortIDMixin()
self.node = obj_utils.create_test_node(self.context,
network_interface='neutron')
diff --git a/ironic/tests/unit/drivers/modules/network/test_flat.py b/ironic/tests/unit/drivers/modules/network/test_flat.py
index 5cb9075ac..31462c3fb 100644
--- a/ironic/tests/unit/drivers/modules/network/test_flat.py
+++ b/ironic/tests/unit/drivers/modules/network/test_flat.py
@@ -30,7 +30,6 @@ class TestFlatInterface(db_base.DbTestCase):
def setUp(self):
super(TestFlatInterface, self).setUp()
- self.config(enabled_drivers=['fake'])
self.interface = flat_interface.FlatNetwork()
self.node = utils.create_test_node(self.context)
self.port = utils.create_test_port(
diff --git a/ironic/tests/unit/drivers/modules/network/test_noop.py b/ironic/tests/unit/drivers/modules/network/test_noop.py
index 0d969131e..156af25df 100644
--- a/ironic/tests/unit/drivers/modules/network/test_noop.py
+++ b/ironic/tests/unit/drivers/modules/network/test_noop.py
@@ -20,7 +20,6 @@ class NoopInterfaceTestCase(db_base.DbTestCase):
def setUp(self):
super(NoopInterfaceTestCase, self).setUp()
- self.config(enabled_drivers=['fake'])
self.interface = noop.NoopNetwork()
self.node = utils.create_test_node(self.context,
network_interface='noop')
diff --git a/ironic/tests/unit/drivers/modules/storage/test_cinder.py b/ironic/tests/unit/drivers/modules/storage/test_cinder.py
index afcfada42..b2f6a4553 100644
--- a/ironic/tests/unit/drivers/modules/storage/test_cinder.py
+++ b/ironic/tests/unit/drivers/modules/storage/test_cinder.py
@@ -35,13 +35,15 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
self.config(action_retries=3,
action_retry_interval=0,
group='cinder')
- self.config(enabled_storage_interfaces=['noop', 'cinder'])
+ self.config(enabled_boot_interfaces=['fake'],
+ enabled_storage_interfaces=['noop', 'cinder'])
self.interface = cinder.CinderStorage()
+ self.node = object_utils.create_test_node(self.context,
+ boot_interface='fake',
+ storage_interface='cinder')
@mock.patch.object(cinder, 'LOG', autospec=True)
def test__fail_validation(self, mock_log):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
"""Ensure the validate helper logs and raises exceptions."""
fake_error = 'a error!'
expected = ("Failed to validate cinder storage interface for node "
@@ -55,8 +57,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test__generate_connector_raises_with_insufficent_data(self, mock_log):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
with task_manager.acquire(self.context, self.node.id) as task:
self.assertRaises(exception.StorageError,
self.interface._generate_connector,
@@ -64,8 +64,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
self.assertTrue(mock_log.error.called)
def test__generate_connector_iscsi(self):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
expected = {
'initiator': 'iqn.address',
'ip': 'ip.address',
@@ -84,8 +82,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test__generate_connector_iscsi_and_unknown(self, mock_log):
"""Validate we return and log with valid and invalid connectors."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
expected = {
'initiator': 'iqn.address',
'host': self.node.uuid,
@@ -104,8 +100,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test__generate_connector_unknown_raises_excption(self, mock_log):
"""Validate an exception is raised with only an invalid connector."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='foo',
connector_id='bar')
@@ -119,8 +113,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
def test__generate_connector_single_path(self):
"""Validate an exception is raised with only an invalid connector."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
expected = {
'initiator': 'iqn.address',
'host': self.node.uuid}
@@ -132,8 +124,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
self.assertDictEqual(expected, return_value)
def test__generate_connector_multiple_fc_wwns(self):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
"""Validate handling of WWPNs and WWNNs."""
expected = {
'wwpns': ['wwpn1', 'wwpn2'],
@@ -171,8 +161,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder.CinderStorage, '_fail_validation', autospec=True)
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_success_no_settings(self, mock_log, mock_fail):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
with task_manager.acquire(self.context, self.node.id) as task:
self.interface.validate(task)
self.assertFalse(mock_fail.called)
@@ -180,9 +168,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_failure_if_iscsi_boot_no_connectors(self, mock_log):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
-
valid_types = ', '.join(cinder.VALID_ISCSI_TYPES)
expected_msg = ("Failed to validate cinder storage interface for node "
"%(id)s. In order to enable the 'iscsi_boot' "
@@ -200,8 +185,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_failure_if_fc_boot_no_connectors(self, mock_log):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
valid_types = ', '.join(cinder.VALID_FC_TYPES)
expected_msg = ("Failed to validate cinder storage interface for node "
"%(id)s. In order to enable the 'fibre_channel_boot' "
@@ -222,8 +205,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_success_iscsi_connector(self, mock_log, mock_fail):
"""Perform validate with only an iSCSI connector in place."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='iqn',
connector_id='iqn.address')
@@ -236,8 +217,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_success_fc_connectors(self, mock_log, mock_fail):
"""Perform validate with only FC connectors in place"""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='wwpn',
connector_id='wwpn.address', uuid=uuidutils.generate_uuid())
@@ -253,8 +232,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_success_connectors_and_boot(self, mock_log, mock_fail):
"""Perform validate with volume connectors and boot capabilities."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='iqn',
connector_id='iqn.address', uuid=uuidutils.generate_uuid())
@@ -277,8 +254,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_success_iscsi_targets(self, mock_log, mock_fail):
"""Validate success with full iscsi scenario."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='iqn',
connector_id='iqn.address', uuid=uuidutils.generate_uuid())
@@ -295,8 +270,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_success_fc_targets(self, mock_log, mock_fail):
"""Validate success with full fc scenario."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='wwpn',
connector_id='fc.address', uuid=uuidutils.generate_uuid())
@@ -318,8 +291,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
def test_validate_fails_with_ipxe_not_enabled(self, mock_log):
"""Ensure a validation failure is raised when iPXE not enabled."""
self.config(ipxe_enabled=False, group='pxe')
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='iqn',
connector_id='foo.address')
@@ -336,8 +307,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_fails_when_fc_connectors_unequal(self, mock_log):
"""Validate should fail with only wwnn FC connector in place"""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='wwnn',
connector_id='wwnn.address')
@@ -350,8 +319,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_fail_on_unknown_volume_types(self, mock_log):
"""Ensure exception is raised when connector/target do not match."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='iqn',
connector_id='foo.address')
@@ -368,8 +335,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_fails_iscsi_conn_fc_target(self, mock_log):
"""Validate failure of iSCSI connectors with FC target."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='iqn',
connector_id='foo.address')
@@ -386,8 +351,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_validate_fails_fc_conn_iscsi_target(self, mock_log):
"""Validate failure of FC connectors with iSCSI target."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_connector(
self.context, node_id=self.node.id, type='fibre_channel',
connector_id='foo.address')
@@ -408,8 +371,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG')
def test_attach_detach_volumes_no_volumes(self, mock_log,
mock_attach, mock_detach):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
with task_manager.acquire(self.context, self.node.id) as task:
self.interface.attach_volumes(task)
self.interface.detach_volumes(task)
@@ -424,8 +385,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
mock_attach,
mock_detach):
"""Without connectors, attach and detach should fail."""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
@@ -447,8 +406,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
mock_log,
mock_attach,
mock_detach):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
target_uuid = uuidutils.generate_uuid()
test_volume_target = object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
@@ -481,9 +438,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_attach_volumes_failure(self, mock_log, mock_attach, mock_detach):
"""Verify detach is called upon attachment failing."""
-
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
@@ -516,8 +470,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
Volume attachment fails if the number of attachments completed
does not match the number of configured targets.
"""
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
@@ -538,8 +490,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
@mock.patch.object(cinder_common, 'detach_volumes', autospec=True)
@mock.patch.object(cinder, 'LOG', autospec=True)
def test_detach_volumes_failure(self, mock_log, mock_detach):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
@@ -568,8 +518,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
def test_detach_volumes_failure_raises_exception(self,
mock_log,
mock_detach):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
@@ -589,8 +537,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase):
self.assertEqual(4, mock_detach.call_count)
def test_should_write_image(self):
- self.node = object_utils.create_test_node(self.context,
- storage_interface='cinder')
object_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
diff --git a/ironic/tests/unit/drivers/modules/test_deploy_utils.py b/ironic/tests/unit/drivers/modules/test_deploy_utils.py
index 331645b4e..28f93be8e 100644
--- a/ironic/tests/unit/drivers/modules/test_deploy_utils.py
+++ b/ironic/tests/unit/drivers/modules/test_deploy_utils.py
@@ -975,7 +975,8 @@ class GetPxeBootConfigTestCase(db_base.DbTestCase):
def setUp(self):
super(GetPxeBootConfigTestCase, self).setUp()
- self.node = obj_utils.get_test_node(self.context, driver='fake')
+ self.node = obj_utils.get_test_node(self.context,
+ driver='fake-hardware')
self.config(pxe_bootfile_name='bios-bootfile', group='pxe')
self.config(uefi_pxe_bootfile_name='uefi-bootfile', group='pxe')
self.config(pxe_config_template='bios-template', group='pxe')
@@ -1308,7 +1309,8 @@ class ParseInstanceInfoCapabilitiesTestCase(tests_base.TestCase):
def setUp(self):
super(ParseInstanceInfoCapabilitiesTestCase, self).setUp()
- self.node = obj_utils.get_test_node(self.context, driver='fake')
+ self.node = obj_utils.get_test_node(self.context,
+ driver='fake-hardware')
def test_parse_instance_info_capabilities_string(self):
self.node.instance_info = {'capabilities': '{"cat": "meow"}'}
@@ -1440,7 +1442,8 @@ class TrySetBootDeviceTestCase(db_base.DbTestCase):
def setUp(self):
super(TrySetBootDeviceTestCase, self).setUp()
- self.node = obj_utils.create_test_node(self.context, driver="fake")
+ self.node = obj_utils.create_test_node(self.context,
+ driver="fake-hardware")
@mock.patch.object(manager_utils, 'node_set_boot_device', autospec=True)
def test_try_set_boot_device_okay(self, node_set_boot_device_mock):
@@ -2380,7 +2383,8 @@ class TestStorageInterfaceUtils(db_base.DbTestCase):
def setUp(self):
super(TestStorageInterfaceUtils, self).setUp()
self.node = obj_utils.create_test_node(self.context,
- driver='fake')
+ driver='fake-hardware')
+ self.config(enabled_storage_interfaces=['noop', 'fake', 'cinder'])
def test_check_interface_capability(self):
class fake_driver(object):
@@ -2415,18 +2419,14 @@ class TestStorageInterfaceUtils(db_base.DbTestCase):
self.context, self.node.uuid, shared=False) as task:
self.assertIsNone(utils.get_remote_boot_volume(task))
- @mock.patch.object(fake, 'FakeBoot', autospec=True)
- @mock.patch.object(fake, 'FakeDeploy', autospec=True)
+ @mock.patch.object(fake.FakeBoot, 'capabilities',
+ ['iscsi_volume_boot'], create=True)
+ @mock.patch.object(fake.FakeDeploy, 'capabilities',
+ ['iscsi_volume_deploy'], create=True)
@mock.patch.object(cinder.CinderStorage, 'should_write_image',
autospec=True)
def test_populate_storage_driver_internal_info_iscsi(self,
- mock_should_write,
- mock_deploy,
- mock_boot):
- mock_deploy.return_value = mock.Mock(
- capabilities=['iscsi_volume_deploy'])
- mock_boot.return_value = mock.Mock(
- capabilities=['iscsi_volume_boot'])
+ mock_should_write):
mock_should_write.return_value = True
vol_uuid = uuidutils.generate_uuid()
obj_utils.create_test_volume_target(
@@ -2453,18 +2453,14 @@ class TestStorageInterfaceUtils(db_base.DbTestCase):
task.node.driver_internal_info.get('boot_from_volume_deploy',
None))
- @mock.patch.object(fake, 'FakeBoot', autospec=True)
- @mock.patch.object(fake, 'FakeDeploy', autospec=True)
+ @mock.patch.object(fake.FakeBoot, 'capabilities',
+ ['fibre_channel_volume_boot'], create=True)
+ @mock.patch.object(fake.FakeDeploy, 'capabilities',
+ ['fibre_channel_volume_deploy'], create=True)
@mock.patch.object(cinder.CinderStorage, 'should_write_image',
autospec=True)
def test_populate_storage_driver_internal_info_fc(self,
- mock_should_write,
- mock_deploy,
- mock_boot):
- mock_deploy.return_value = mock.Mock(
- capabilities=['fibre_channel_volume_deploy'])
- mock_boot.return_value = mock.Mock(
- capabilities=['fibre_channel_volume_boot'])
+ mock_should_write):
mock_should_write.return_value = True
self.node.storage_interface = "cinder"
self.node.save()
@@ -2487,15 +2483,11 @@ class TestStorageInterfaceUtils(db_base.DbTestCase):
task.node.driver_internal_info.get('boot_from_volume_deploy',
None))
- @mock.patch.object(fake, 'FakeBoot', autospec=True)
- @mock.patch.object(fake, 'FakeDeploy', autospec=True)
- def test_populate_storage_driver_internal_info_error(
- self, mock_deploy, mock_boot):
- mock_deploy.return_value = mock.Mock(
- capabilities=['fibre_channel_volume_deploy'])
- mock_boot.return_value = mock.Mock(
- capabilities=['fibre_channel_volume_boot'])
-
+ @mock.patch.object(fake.FakeBoot, 'capabilities',
+ ['fibre_channel_volume_boot'], create=True)
+ @mock.patch.object(fake.FakeDeploy, 'capabilities',
+ ['fibre_channel_volume_deploy'], create=True)
+ def test_populate_storage_driver_internal_info_error(self):
obj_utils.create_test_volume_target(
self.context, node_id=self.node.id, volume_type='iscsi',
boot_index=0, volume_id='1234')
diff --git a/ironic/tests/unit/drivers/test_fake.py b/ironic/tests/unit/drivers/test_fake_hardware.py
index 0d6df7a3a..7091db4a5 100644
--- a/ironic/tests/unit/drivers/test_fake.py
+++ b/ironic/tests/unit/drivers/test_fake_hardware.py
@@ -17,28 +17,24 @@
"""Test class for Fake driver."""
-import mock
from ironic.common import boot_devices
-from ironic.common import driver_factory
from ironic.common import exception
from ironic.common import states
from ironic.conductor import task_manager
from ironic.drivers import base as driver_base
from ironic.tests.unit.db import base as db_base
-from ironic.tests.unit.objects import utils as obj_utils
+from ironic.tests.unit.db import utils as db_utils
-class FakeDriverTestCase(db_base.DbTestCase):
+class FakeHardwareTestCase(db_base.DbTestCase):
def setUp(self):
- super(FakeDriverTestCase, self).setUp()
- self.driver = driver_factory.get_driver("fake")
- self.node = obj_utils.get_test_node(self.context)
- self.task = mock.MagicMock(spec=task_manager.TaskManager)
- self.task.shared = False
- self.task.node = self.node
- self.task.driver = self.driver
+ super(FakeHardwareTestCase, self).setUp()
+ self.node = db_utils.create_test_node()
+ self.task = task_manager.acquire(self.context, self.node.id)
+ self.addCleanup(self.task.release_resources)
+ self.driver = self.task.driver
def test_driver_interfaces(self):
self.assertIsInstance(self.driver.power, driver_base.PowerInterface)
@@ -49,7 +45,7 @@ class FakeDriverTestCase(db_base.DbTestCase):
driver_base.ConsoleInterface)
def test_get_properties(self):
- expected = ['A1', 'A2', 'B1', 'B2']
+ expected = ['B1', 'B2']
properties = self.driver.get_properties()
self.assertEqual(sorted(expected), sorted(properties))
diff --git a/ironic/tests/unit/drivers/test_generic.py b/ironic/tests/unit/drivers/test_generic.py
index fd70b4405..e1f4a9093 100644
--- a/ironic/tests/unit/drivers/test_generic.py
+++ b/ironic/tests/unit/drivers/test_generic.py
@@ -34,8 +34,7 @@ class ManualManagementHardwareTestCase(db_base.DbTestCase):
super(ManualManagementHardwareTestCase, self).setUp()
self.config(enabled_hardware_types=['manual-management'],
enabled_power_interfaces=['fake'],
- enabled_management_interfaces=['fake'],
- enabled_inspect_interfaces=['no-inspect'])
+ enabled_management_interfaces=['fake'])
self.config(enabled=True, group='inspector')
def test_default_interfaces(self):
@@ -50,7 +49,8 @@ class ManualManagementHardwareTestCase(db_base.DbTestCase):
self.assertIsInstance(task.driver.raid, noop.NoRAID)
def test_supported_interfaces(self):
- self.config(enabled_inspect_interfaces=['inspector', 'no-inspect'])
+ self.config(enabled_inspect_interfaces=['inspector', 'no-inspect'],
+ enabled_raid_interfaces=['agent'])
node = obj_utils.create_test_node(self.context,
driver='manual-management',
deploy_interface='direct',
diff --git a/ironic/tests/unit/drivers/test_utils.py b/ironic/tests/unit/drivers/test_utils.py
index 115550b7c..b09915704 100644
--- a/ironic/tests/unit/drivers/test_utils.py
+++ b/ironic/tests/unit/drivers/test_utils.py
@@ -20,7 +20,6 @@ import mock
from oslo_config import cfg
from oslo_utils import timeutils
-from ironic.common import driver_factory
from ironic.common import exception
from ironic.common import swift
from ironic.conductor import task_manager
@@ -37,32 +36,8 @@ class UtilsTestCase(db_base.DbTestCase):
def setUp(self):
super(UtilsTestCase, self).setUp()
- self.driver = driver_factory.get_driver("fake")
self.node = obj_utils.create_test_node(self.context)
- def test_vendor_interface_get_properties(self):
- expected = {'A1': 'A1 description. Required.',
- 'A2': 'A2 description. Optional.',
- 'B1': 'B1 description. Required.',
- 'B2': 'B2 description. Required.'}
- props = self.driver.vendor.get_properties()
- self.assertEqual(expected, props)
-
- @mock.patch.object(fake.FakeVendorA, 'validate', autospec=True)
- def test_vendor_interface_validate_valid_methods(self,
- mock_fakea_validate):
- with task_manager.acquire(self.context, self.node.uuid) as task:
- self.driver.vendor.validate(task, method='first_method')
- mock_fakea_validate.assert_called_once_with(
- self.driver.vendor.mapping['first_method'],
- task, method='first_method')
-
- def test_vendor_interface_validate_bad_method(self):
- with task_manager.acquire(self.context, self.node.uuid) as task:
- self.assertRaises(exception.InvalidParameterValue,
- self.driver.vendor.validate,
- task, method='fake_method')
-
def test_get_node_mac_addresses(self):
ports = []
ports.append(
@@ -378,3 +353,41 @@ class UtilsRamdiskLogsTestCase(tests_base.TestCase):
mock_makedirs.assert_called_once_with(log_path)
mock_logs_name.assert_called_once_with(self.node, label=None)
+
+
+class MixinVendorInterfaceTestCase(db_base.DbTestCase):
+
+ def setUp(self):
+ super(MixinVendorInterfaceTestCase, self).setUp()
+ self.a = fake.FakeVendorA()
+ self.b = fake.FakeVendorB()
+ self.mapping = {'first_method': self.a,
+ 'second_method': self.b,
+ 'third_method_sync': self.b,
+ 'fourth_method_shared_lock': self.b}
+ self.vendor = driver_utils.MixinVendorInterface(self.mapping)
+ self.node = obj_utils.create_test_node(self.context,
+ driver='fake-hardware')
+
+ def test_vendor_interface_get_properties(self):
+ expected = {'A1': 'A1 description. Required.',
+ 'A2': 'A2 description. Optional.',
+ 'B1': 'B1 description. Required.',
+ 'B2': 'B2 description. Required.'}
+ props = self.vendor.get_properties()
+ self.assertEqual(expected, props)
+
+ @mock.patch.object(fake.FakeVendorA, 'validate', autospec=True)
+ def test_vendor_interface_validate_valid_methods(self,
+ mock_fakea_validate):
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ self.vendor.validate(task, method='first_method')
+ mock_fakea_validate.assert_called_once_with(
+ self.vendor.mapping['first_method'],
+ task, method='first_method')
+
+ def test_vendor_interface_validate_bad_method(self):
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ self.assertRaises(exception.InvalidParameterValue,
+ self.vendor.validate,
+ task, method='fake_method')