Merge "Use prolianutils module for ilo driver tests"
This commit is contained in:
commit
cf9932fe63
@ -110,13 +110,13 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
self.node = obj_utils.create_test_node(self.context,
|
||||
driver='fake_ilo', driver_info=self.info)
|
||||
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
@mock.patch.object(ilo_client, 'IloClient')
|
||||
def test_get_ilo_object(self, ilo_client_mock):
|
||||
self.info['client_timeout'] = 60
|
||||
self.info['client_port'] = 443
|
||||
ilo_client_mock.IloClient.return_value = 'ilo_object'
|
||||
ilo_client_mock.return_value = 'ilo_object'
|
||||
returned_ilo_object = ilo_common.get_ilo_object(self.node)
|
||||
ilo_client_mock.IloClient.assert_called_with(
|
||||
ilo_client_mock.assert_called_with(
|
||||
self.info['ilo_address'],
|
||||
self.info['ilo_username'],
|
||||
self.info['ilo_password'],
|
||||
@ -124,12 +124,12 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
self.info['client_port'])
|
||||
self.assertEqual('ilo_object', returned_ilo_object)
|
||||
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
def test_get_ilo_license(self, ilo_client_mock):
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_get_ilo_license(self, get_ilo_object_mock):
|
||||
ilo_advanced_license = {'LICENSE_TYPE': 'iLO 3 Advanced'}
|
||||
ilo_standard_license = {'LICENSE_TYPE': 'iLO 3'}
|
||||
|
||||
ilo_mock_object = ilo_client_mock.IloClient.return_value
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_all_licenses.return_value = ilo_advanced_license
|
||||
|
||||
license = ilo_common.get_ilo_license(self.node)
|
||||
@ -139,11 +139,11 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
license = ilo_common.get_ilo_license(self.node)
|
||||
self.assertEqual(ilo_common.STANDARD_LICENSE, license)
|
||||
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
def test_get_ilo_license_fail(self, ilo_client_mock):
|
||||
ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = ilo_client_mock.IloClient.return_value
|
||||
ilo_mock_object.get_all_licenses.side_effect = [Exception()]
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_get_ilo_license_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.get_all_licenses.side_effect = exc
|
||||
self.assertRaises(exception.IloOperationError,
|
||||
ilo_common.get_ilo_license,
|
||||
self.node)
|
||||
@ -241,10 +241,9 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
files_info=files_info,
|
||||
parameters=deploy_args)
|
||||
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
def test_attach_vmedia(self, ilo_client_mock):
|
||||
ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = ilo_client_mock.IloClient.return_value
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_attach_vmedia(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
insert_media_mock = ilo_mock_object.insert_virtual_media
|
||||
set_status_mock = ilo_mock_object.set_vm_status
|
||||
|
||||
@ -253,9 +252,15 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
set_status_mock.assert_called_once_with(device='FLOPPY',
|
||||
boot_option='CONNECT', write_protect='YES')
|
||||
|
||||
set_status_mock.side_effect = Exception()
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_attach_vmedia_fails(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
set_status_mock = ilo_mock_object.set_vm_status
|
||||
exc = ilo_client.IloError('error')
|
||||
set_status_mock.side_effect = exc
|
||||
self.assertRaises(exception.IloOperationError,
|
||||
ilo_common.attach_vmedia, self.node, 'FLOPPY', 'url')
|
||||
ilo_common.attach_vmedia, self.node,
|
||||
'FLOPPY', 'url')
|
||||
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_set_boot_mode(self, get_ilo_object_mock):
|
||||
@ -279,17 +284,15 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
get_pending_boot_mode_mock.assert_called_once_with()
|
||||
self.assertFalse(ilo_object_mock.set_pending_boot_mode.called)
|
||||
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_set_boot_mode_with_IloOperationError(self,
|
||||
get_ilo_object_mock,
|
||||
ilo_client_mock):
|
||||
get_ilo_object_mock):
|
||||
ilo_object_mock = get_ilo_object_mock.return_value
|
||||
get_pending_boot_mode_mock = ilo_object_mock.get_pending_boot_mode
|
||||
get_pending_boot_mode_mock.return_value = 'UEFI'
|
||||
set_pending_boot_mode_mock = ilo_object_mock.set_pending_boot_mode
|
||||
ilo_client_mock.IloError = Exception
|
||||
set_pending_boot_mode_mock.side_effect = Exception
|
||||
exc = ilo_client.IloError('error')
|
||||
set_pending_boot_mode_mock.side_effect = exc
|
||||
self.assertRaises(exception.IloOperationError,
|
||||
ilo_common.set_boot_mode, self.node, 'bios')
|
||||
get_ilo_object_mock.assert_called_once_with(self.node)
|
||||
@ -298,12 +301,9 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
@mock.patch.object(driver_utils, 'rm_node_capability')
|
||||
@mock.patch.object(driver_utils, 'add_node_capability')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
def test_update_boot_mode_capability(self, ilo_client_mock,
|
||||
get_ilo_object_mock,
|
||||
def test_update_boot_mode_capability(self, get_ilo_object_mock,
|
||||
add_node_capability_mock,
|
||||
rm_node_capability_mock):
|
||||
ilo_client_mock.IloCommandNotSupportedError = Exception
|
||||
ilo_mock_obj = get_ilo_object_mock.return_value
|
||||
ilo_mock_obj.get_pending_boot_mode.return_value = 'legacy'
|
||||
|
||||
@ -319,11 +319,9 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
|
||||
@mock.patch.object(driver_utils, 'add_node_capability')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
def test_update_boot_mode_capability_unknown(self, ilo_client_mock,
|
||||
get_ilo_object_mock,
|
||||
add_node_capability_mock):
|
||||
ilo_client_mock.IloCommandNotSupportedError = Exception
|
||||
def test_update_boot_mode_capability_unknown(self,
|
||||
get_ilo_object_mock,
|
||||
add_node_capability_mock):
|
||||
ilo_mock_obj = get_ilo_object_mock.return_value
|
||||
ilo_mock_obj.get_pending_boot_mode.return_value = 'UNKNOWN'
|
||||
set_pending_boot_mode_mock = ilo_mock_obj.set_pending_boot_mode
|
||||
@ -340,13 +338,12 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
|
||||
@mock.patch.object(driver_utils, 'add_node_capability')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
def test_update_boot_mode_capability_legacy(self, ilo_client_mock,
|
||||
def test_update_boot_mode_capability_legacy(self,
|
||||
get_ilo_object_mock,
|
||||
add_node_capability_mock):
|
||||
ilo_client_mock.IloCommandNotSupportedError = Exception
|
||||
ilo_mock_obj = get_ilo_object_mock.return_value
|
||||
ilo_mock_obj.get_pending_boot_mode.side_effect = Exception
|
||||
exc = ilo_client.IloCommandNotSupportedError('error')
|
||||
ilo_mock_obj.get_pending_boot_mode.side_effect = exc
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
|
@ -23,7 +23,6 @@ from ironic.common import boot_devices
|
||||
from ironic.common import exception
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.drivers.modules.ilo import common as ilo_common
|
||||
from ironic.drivers.modules.ilo import management as ilo_management
|
||||
from ironic.drivers.modules import ipmitool
|
||||
from ironic.tests.conductor import utils as mgr_utils
|
||||
from ironic.tests.db import base as db_base
|
||||
@ -96,12 +95,11 @@ class IloManagementTestCase(db_base.DbTestCase):
|
||||
ilo_mock.get_one_time_boot.assert_called_once_with()
|
||||
ilo_mock.get_persistent_boot_device.assert_called_once_with()
|
||||
|
||||
@mock.patch.object(ilo_management, 'ilo_client')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_get_boot_device_fail(self, get_ilo_object_mock, ilo_mgmt_mock):
|
||||
ilo_mgmt_mock.IloError = Exception
|
||||
def test_get_boot_device_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_one_time_boot.side_effect = Exception()
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.get_one_time_boot.side_effect = exc
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
@ -110,14 +108,12 @@ class IloManagementTestCase(db_base.DbTestCase):
|
||||
task)
|
||||
ilo_mock_object.get_one_time_boot.assert_called_once_with()
|
||||
|
||||
@mock.patch.object(ilo_management, 'ilo_client')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_get_boot_device_persistent_fail(self, get_ilo_object_mock,
|
||||
ilo_mgmt_mock):
|
||||
ilo_mgmt_mock.IloError = Exception
|
||||
def test_get_boot_device_persistent_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_one_time_boot.return_value = 'Normal'
|
||||
ilo_mock_object.get_persistent_boot_device.side_effect = Exception()
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.get_persistent_boot_device.side_effect = exc
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
@ -148,12 +144,11 @@ class IloManagementTestCase(db_base.DbTestCase):
|
||||
ilo_mock.update_persistent_boot.assert_called_once_with(
|
||||
['NETWORK'])
|
||||
|
||||
@mock.patch.object(ilo_management, 'ilo_client')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_set_boot_device_fail(self, get_ilo_object_mock, ilo_mgmt_mock):
|
||||
ilo_mgmt_mock.IloError = Exception
|
||||
def test_set_boot_device_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.set_one_time_boot.side_effect = Exception()
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.set_one_time_boot.side_effect = exc
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
@ -162,13 +157,11 @@ class IloManagementTestCase(db_base.DbTestCase):
|
||||
task, boot_devices.PXE)
|
||||
ilo_mock_object.set_one_time_boot.assert_called_once_with('NETWORK')
|
||||
|
||||
@mock.patch.object(ilo_management, 'ilo_client')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
def test_set_boot_device_persistent_fail(self, get_ilo_object_mock,
|
||||
ilo_mgmt_mock):
|
||||
ilo_mgmt_mock.IloError = Exception
|
||||
def test_set_boot_device_persistent_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.update_persistent_boot.side_effect = Exception()
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.update_persistent_boot.side_effect = exc
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
|
@ -38,8 +38,7 @@ INFO_DICT = db_utils.get_test_ilo_info()
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
@mock.patch.object(ilo_common, 'ilo_client')
|
||||
@mock.patch.object(ilo_power, 'ilo_client')
|
||||
@mock.patch.object(ilo_common, 'get_ilo_object')
|
||||
class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -53,9 +52,8 @@ class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
CONF.set_override('power_retry', 2, 'ilo')
|
||||
CONF.set_override('power_wait', 0, 'ilo')
|
||||
|
||||
def test__get_power_state(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
ilo_mock_object = common_ilo_client_mock.IloClient.return_value
|
||||
def test__get_power_state(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_host_power_status.return_value = 'ON'
|
||||
|
||||
self.assertEqual(
|
||||
@ -68,32 +66,28 @@ class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
ilo_mock_object.get_host_power_status.return_value = 'ERROR'
|
||||
self.assertEqual(states.ERROR, ilo_power._get_power_state(self.node))
|
||||
|
||||
def test__get_power_state_fail(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
power_ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = common_ilo_client_mock.IloClient.return_value
|
||||
ilo_mock_object.get_host_power_status.side_effect = [Exception()]
|
||||
def test__get_power_state_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.get_host_power_status.side_effect = exc
|
||||
|
||||
self.assertRaises(exception.IloOperationError,
|
||||
ilo_power._get_power_state,
|
||||
self.node)
|
||||
ilo_power._get_power_state,
|
||||
self.node)
|
||||
ilo_mock_object.get_host_power_status.assert_called_once_with()
|
||||
|
||||
def test__set_power_state_invalid_state(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
def test__set_power_state_invalid_state(self, get_ilo_object_mock):
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=True) as task:
|
||||
power_ilo_client_mock.IloError = Exception
|
||||
self.assertRaises(exception.IloOperationError,
|
||||
self.assertRaises(exception.InvalidParameterValue,
|
||||
ilo_power._set_power_state,
|
||||
task,
|
||||
states.ERROR)
|
||||
|
||||
def test__set_power_state_reboot_fail(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
power_ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = common_ilo_client_mock.IloClient.return_value
|
||||
ilo_mock_object.reset_server.side_effect = Exception()
|
||||
def test__set_power_state_reboot_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
exc = ilo_client.IloError('error')
|
||||
ilo_mock_object.reset_server.side_effect = exc
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=True) as task:
|
||||
@ -103,10 +97,8 @@ class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
states.REBOOT)
|
||||
ilo_mock_object.reset_server.assert_called_once_with()
|
||||
|
||||
def test__set_power_state_reboot_ok(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
power_ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = common_ilo_client_mock.IloClient.return_value
|
||||
def test__set_power_state_reboot_ok(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_host_power_status.side_effect = ['ON', 'OFF', 'ON']
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
@ -115,10 +107,8 @@ class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
|
||||
ilo_mock_object.reset_server.assert_called_once_with()
|
||||
|
||||
def test__set_power_state_off_fail(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
power_ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = common_ilo_client_mock.IloClient.return_value
|
||||
def test__set_power_state_off_fail(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_host_power_status.return_value = 'ON'
|
||||
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
@ -131,10 +121,8 @@ class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
ilo_mock_object.get_host_power_status.assert_called_with()
|
||||
ilo_mock_object.hold_pwr_btn.assert_called_once_with()
|
||||
|
||||
def test__set_power_state_on_ok(self, power_ilo_client_mock,
|
||||
common_ilo_client_mock):
|
||||
power_ilo_client_mock.IloError = Exception
|
||||
ilo_mock_object = common_ilo_client_mock.IloClient.return_value
|
||||
def test__set_power_state_on_ok(self, get_ilo_object_mock):
|
||||
ilo_mock_object = get_ilo_object_mock.return_value
|
||||
ilo_mock_object.get_host_power_status.side_effect = ['OFF', 'ON']
|
||||
|
||||
target_state = states.POWER_ON
|
||||
@ -147,7 +135,7 @@ class IloPowerInternalMethodsTestCase(db_base.DbTestCase):
|
||||
@mock.patch.object(manager_utils, 'node_set_boot_device')
|
||||
@mock.patch.object(ilo_common, 'setup_vmedia_for_boot')
|
||||
def test__attach_boot_iso(self, setup_vmedia_mock, set_boot_device_mock,
|
||||
power_ilo_client_mock, common_ilo_client_mock):
|
||||
get_ilo_object_mock):
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=True) as task:
|
||||
task.node.instance_info['ilo_boot_iso'] = 'boot-iso'
|
||||
|
@ -84,11 +84,15 @@ if 'ironic.drivers.modules.ipminative' in sys.modules:
|
||||
|
||||
proliantutils = importutils.try_import('proliantutils')
|
||||
if not proliantutils:
|
||||
mock_proliant_utils = mock.MagicMock()
|
||||
sys.modules['proliantutils'] = mock_proliant_utils
|
||||
|
||||
if 'ironic.drivers.ilo' in sys.modules:
|
||||
reload(sys.modules['ironic.drivers.ilo'])
|
||||
proliantutils = mock.MagicMock()
|
||||
sys.modules['proliantutils'] = proliantutils
|
||||
sys.modules['proliantutils.ilo'] = proliantutils.ilo
|
||||
sys.modules['proliantutils.ilo.ribcl'] = proliantutils.ilo.ribcl
|
||||
proliantutils.ilo.ribcl.IloError = type('IloError', (Exception,), {})
|
||||
command_exception = type('IloCommandNotSupportedError', (Exception,), {})
|
||||
proliantutils.ilo.ribcl.IloCommandNotSupportedError = command_exception
|
||||
if 'ironic.drivers.ilo' in sys.modules:
|
||||
reload(sys.modules['ironic.drivers.ilo'])
|
||||
|
||||
|
||||
# attempt to load the external 'pywsman' library, which is required by
|
||||
|
Loading…
Reference in New Issue
Block a user