Remove 'node' parameter from the VendorPassthru interface

The node is redundant since the node object is an attribute of the
task object.

Partial-Bug: #1312632
Change-Id: I14f921023d020eb5a0b8caf1b3c5fa6f248b9ff6
This commit is contained in:
Lucas Alvares Gomes 2014-04-25 11:04:06 +01:00
parent 6be126ec98
commit 73b02ec9b1
15 changed files with 114 additions and 118 deletions

View File

@ -273,11 +273,11 @@ class ConductorManager(periodic_task.PeriodicTasks):
driver=task.node.driver,
extension='vendor passthru')
task.driver.vendor.validate(task, task.node, method=driver_method,
task.driver.vendor.validate(task, method=driver_method,
**info)
task.spawn_after(self._spawn_worker,
task.driver.vendor.vendor_passthru, task,
task.node, method=driver_method, **info)
method=driver_method, **info)
@messaging.expected_exceptions(exception.InvalidParameterValue,
exception.UnsupportedDriverExtension,

View File

@ -22,18 +22,17 @@ LOG = log.getLogger(__name__)
@task_manager.require_exclusive_lock
def node_set_boot_device(task, node, device, persistent=False):
def node_set_boot_device(task, device, persistent=False):
"""Set the boot device for a node.
:param task: a TaskManager instance.
:param node: The Node.
:param device: Boot device. Values are vendor-specific.
:param persistent: Whether to set next-boot, or make the change
permanent. Default: False.
"""
try:
task.driver.vendor.vendor_passthru(task, node,
task.driver.vendor.vendor_passthru(task,
device=device,
persistent=persistent,
method='set_boot_device')

View File

@ -316,11 +316,10 @@ class VendorInterface(object):
"""
@abc.abstractmethod
def validate(self, task, node, **kwargs):
def validate(self, task, **kwargs):
"""Validate vendor-specific actions.
:param task: a task from TaskManager.
:param node: a single Node.
:param kwargs: info for action.
:raises: UnsupportedDriverExtension if 'method' can not be mapped to
the supported interfaces.
@ -328,11 +327,10 @@ class VendorInterface(object):
"""
@abc.abstractmethod
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
"""Receive requests for vendor-specific actions.
:param task: a task from TaskManager.
:param node: a single Node.
:param kwargs: info for action.
:raises: UnsupportedDriverExtension if 'method' can not be mapped to

View File

@ -85,7 +85,7 @@ class FakeDeploy(base.DeployInterface):
class FakeVendorA(base.VendorInterface):
"""Example implementation of a vendor passthru interface."""
def validate(self, task, node, **kwargs):
def validate(self, task, **kwargs):
method = kwargs.get('method')
if method == 'first_method':
bar = kwargs.get('bar')
@ -95,21 +95,21 @@ class FakeVendorA(base.VendorInterface):
return
_raise_unsupported_error(method)
def _private_method(self, task, node, bar):
def _private_method(self, task, bar):
return True if bar == 'baz' else False
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
method = kwargs.get('method')
if method == 'first_method':
bar = kwargs.get('bar')
return self._private_method(task, node, bar)
return self._private_method(task, bar)
_raise_unsupported_error(method)
class FakeVendorB(base.VendorInterface):
"""Example implementation of a secondary vendor passthru."""
def validate(self, task, node, **kwargs):
def validate(self, task, **kwargs):
method = kwargs.get('method')
if method == 'second_method':
bar = kwargs.get('bar')
@ -119,14 +119,14 @@ class FakeVendorB(base.VendorInterface):
return
_raise_unsupported_error(method)
def _private_method(self, task, node, bar):
def _private_method(self, task, bar):
return True if bar == 'kazoo' else False
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
method = kwargs.get('method')
if method == 'second_method':
bar = kwargs.get('bar')
return self._private_method(task, node, bar)
return self._private_method(task, bar)
_raise_unsupported_error(method)

View File

@ -266,11 +266,10 @@ class NativeIPMIPower(base.PowerInterface):
class VendorPassthru(base.VendorInterface):
@task_manager.require_exclusive_lock
def _set_boot_device(self, task, node, device, persistent=False):
def _set_boot_device(self, task, device, persistent=False):
"""Set the boot device for a node.
:param task: a TaskManager instance.
:param node: The Node.
:param device: Boot device. One of [net, network, pxe, hd, cd,
cdrom, dvd, floppy, default, setup, f1]
:param persistent: Whether to set next-boot, or make the change
@ -279,11 +278,10 @@ class VendorPassthru(base.VendorInterface):
or required ipmi credentials are missing.
:raises: IPMIFailure when the native ipmi call fails.
"""
if device not in ipmi_command.boot_devices:
raise exception.InvalidParameterValue(_(
"Invalid boot device %s specified.") % device)
driver_info = _parse_driver_info(node)
driver_info = _parse_driver_info(task.node)
try:
ipmicmd = ipmi_command.Command(bmc=driver_info['address'],
userid=driver_info['username'],
@ -295,9 +293,9 @@ class VendorPassthru(base.VendorInterface):
% {'node_id': driver_info['uuid'], 'error': str(e)})
raise exception.IPMIFailure(cmd=str(e))
def validate(self, node, **kwargs):
def validate(self, task, **kwargs):
"""Validate vendor-specific actions.
:param node: The node
:param task: a TaskManager instance.
:param kwargs: the keyword arguments supplied
:raises: InvalidParameterValue if an invalid boot device is specified,
@ -314,17 +312,16 @@ class VendorPassthru(base.VendorInterface):
raise exception.InvalidParameterValue(_(
"Unsupported method (%s) passed to IPMINative driver.")
% method)
_parse_driver_info(node)
_parse_driver_info(task.node)
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
"""Receive requests for vendor-specific actions.
:param task: a TaskManager instance.
:param node: The node
:param kwargs: the keyword arguments supplied
"""
method = kwargs['method']
if method == 'set_boot_device':
return self._set_boot_device(
task, node,
task,
kwargs.get('device'),
kwargs.get('persistent', False))

View File

@ -342,11 +342,10 @@ class IPMIPower(base.PowerInterface):
class VendorPassthru(base.VendorInterface):
@task_manager.require_exclusive_lock
def _set_boot_device(self, task, node, device, persistent=False):
def _set_boot_device(self, task, device, persistent=False):
"""Set the boot device for a node.
:param task: a TaskManager instance.
:param node: The Node.
:param device: Boot device. One of [pxe, disk, cdrom, safe, bios].
:param persistent: Whether to set next-boot, or make the change
permanent. Default: False.
@ -361,14 +360,14 @@ class VendorPassthru(base.VendorInterface):
cmd = "chassis bootdev %s" % device
if persistent:
cmd = cmd + " options=persistent"
driver_info = _parse_driver_info(node)
driver_info = _parse_driver_info(task.node)
try:
out, err = _exec_ipmitool(driver_info, cmd)
# TODO(deva): validate (out, err) and add unit test for failure
except Exception:
raise exception.IPMIFailure(cmd=cmd)
def validate(self, node, **kwargs):
def validate(self, task, **kwargs):
method = kwargs['method']
if method == 'set_boot_device':
device = kwargs.get('device')
@ -382,10 +381,10 @@ class VendorPassthru(base.VendorInterface):
return True
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
method = kwargs['method']
if method == 'set_boot_device':
return self._set_boot_device(
task, node,
task,
kwargs.get('device'),
kwargs.get('persistent', False))

View File

@ -587,7 +587,7 @@ class PXEDeploy(base.DeployInterface):
# to deploy ramdisk
_create_token_file(task, node)
_update_neutron(task, node)
manager_utils.node_set_boot_device(task, node, 'pxe', persistent=True)
manager_utils.node_set_boot_device(task, 'pxe', persistent=True)
manager_utils.node_power_action(task, node, states.REBOOT)
return states.DEPLOYWAIT
@ -693,10 +693,10 @@ class VendorPassthru(base.VendorInterface):
return params
def validate(self, task, node, **kwargs):
def validate(self, task, **kwargs):
method = kwargs['method']
if method == 'pass_deploy_info':
self._get_deploy_info(node, **kwargs)
self._get_deploy_info(task.node, **kwargs)
else:
raise exception.InvalidParameterValue(_(
"Unsupported method (%s) passed to PXE driver.")
@ -705,12 +705,13 @@ class VendorPassthru(base.VendorInterface):
return True
@task_manager.require_exclusive_lock
def _continue_deploy(self, task, node, **kwargs):
def _continue_deploy(self, task, **kwargs):
"""Resume a deployment upon getting POST data from deploy ramdisk.
This method raises no exceptions because it is intended to be
invoked asynchronously as a callback from the deploy ramdisk.
"""
node = task.node
def _set_failed_state(msg):
node.provision_state = states.DEPLOYFAIL
@ -764,7 +765,7 @@ class VendorPassthru(base.VendorInterface):
node.target_provision_state = states.NOSTATE
node.save(task.context)
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
method = kwargs['method']
if method == 'pass_deploy_info':
self._continue_deploy(task, node, **kwargs)
self._continue_deploy(task, **kwargs)

View File

@ -387,7 +387,7 @@ class Power(base.PowerInterface):
class VendorPassthru(base.VendorInterface):
"""SeaMicro vendor-specific methods."""
def validate(self, task, node, **kwargs):
def validate(self, task, **kwargs):
method = kwargs['method']
if method in VENDOR_PASSTHRU_METHODS:
return True
@ -396,18 +396,18 @@ class VendorPassthru(base.VendorInterface):
"Unsupported method (%s) passed to SeaMicro driver.")
% method)
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
"""Dispatch vendor specific method calls."""
method = kwargs['method']
if method in VENDOR_PASSTHRU_METHODS:
return getattr(self, "_" + method)(task, node, **kwargs)
return getattr(self, "_" + method)(task, **kwargs)
def _set_node_vlan_id(self, task, node, **kwargs):
def _set_node_vlan_id(self, task, **kwargs):
"""Sets a untagged vlan id for NIC 0 of node.
@kwargs vlan_id: id of untagged vlan for NIC 0 of node
"""
node = task.node
vlan_id = kwargs.get('vlan_id')
if not vlan_id:
raise exception.InvalidParameterValue(_("No vlan id provided"))
@ -430,7 +430,7 @@ class VendorPassthru(base.VendorInterface):
node.properties = properties
node.save(task.context)
def _attach_volume(self, task, node, **kwargs):
def _attach_volume(self, task, **kwargs):
"""Attach volume from SeaMicro storage pools for ironic to node.
If kwargs['volume_id'] not given, Create volume in SeaMicro
storage pool and attach to node.
@ -440,6 +440,7 @@ class VendorPassthru(base.VendorInterface):
@kwargs volume_size: size of new volume to be created and attached
as root volume of node
"""
node = task.node
seamicro_info = _parse_driver_info(node)
volume_id = kwargs.get('volume_id')
@ -465,7 +466,7 @@ class VendorPassthru(base.VendorInterface):
node.properties = properties
node.save(task.context)
def _set_boot_device(self, task, node, **kwargs):
def _set_boot_device(self, task, **kwargs):
"""Set the boot device of the node.
@kwargs device: Boot device. One of [pxe, disk]
@ -478,7 +479,7 @@ class VendorPassthru(base.VendorInterface):
if boot_device not in VALID_BOOT_DEVICES:
raise exception.InvalidParameterValue(_("Boot device is invalid"))
seamicro_info = _parse_driver_info(node)
seamicro_info = _parse_driver_info(task.node)
try:
server = _get_server(seamicro_info)
if boot_device == "disk":

View File

@ -57,7 +57,7 @@ class MixinVendorInterface(base.VendorInterface):
route = self._map(**kwargs)
route.validate(*args, **kwargs)
def vendor_passthru(self, task, node, **kwargs):
def vendor_passthru(self, task, **kwargs):
"""Call vendor_passthru on the appropriate interface only.
Returns or raises according to the requested vendor_passthru method.
@ -68,7 +68,7 @@ class MixinVendorInterface(base.VendorInterface):
"""
route = self._map(**kwargs)
return route.vendor_passthru(task, node, **kwargs)
return route.vendor_passthru(task, **kwargs)
def driver_vendor_passthru(self, context, method, **kwargs):
"""Call driver_vendor_passthru on a mapped interface based on the

View File

@ -41,7 +41,6 @@ class NodeSetBootDeviceTestCase(base.DbTestCase):
self.assertRaises(exception.InvalidParameterValue,
conductor_utils.node_set_boot_device,
task,
task.node,
device='fake')
def test_node_set_boot_device_valid(self):
@ -57,10 +56,8 @@ class NodeSetBootDeviceTestCase(base.DbTestCase):
with mock.patch.object(self.driver.vendor,
'vendor_passthru') as driver_vpassthru:
conductor_utils.node_set_boot_device(task,
task.node,
device='pxe')
driver_vpassthru.assert_called_once_with(task,
task.node,
device='pxe',
persistent=False,
method='set_boot_device')

View File

@ -207,9 +207,7 @@ class IPMINativeDriverTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context,
[self.node['uuid']]) as task:
self.driver.vendor._set_boot_device(task,
self.node,
'pxe')
self.driver.vendor._set_boot_device(task, 'pxe')
ipmicmd.set_bootdev.assert_called_once_with('pxe')
def test_set_boot_device_bad_device(self):
@ -217,7 +215,6 @@ class IPMINativeDriverTestCase(db_base.DbTestCase):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor._set_boot_device,
task,
self.node,
'fake-device')
def test_reboot_ok(self):
@ -244,25 +241,33 @@ class IPMINativeDriverTestCase(db_base.DbTestCase):
ipmicmd.set_power.assert_called_once_with('boot', 500)
def test_vendor_passthru_validate__set_boot_device_good(self):
self.driver.vendor.validate(self.node,
method='set_boot_device',
device='pxe')
with task_manager.acquire(self.context,
[self.node['uuid']]) as task:
self.driver.vendor.validate(task,
method='set_boot_device',
device='pxe')
def test_vendor_passthru_val__set_boot_device_fail_unknown_device(self):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
self.node, method='set_boot_device',
device='non-existent')
with task_manager.acquire(self.context,
[self.node['uuid']]) as task:
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
task, method='set_boot_device',
device='non-existent')
def test_vendor_passthru_val__set_boot_device_fail_missed_device_arg(self):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
self.node, method='set_boot_device')
with task_manager.acquire(self.context,
[self.node['uuid']]) as task:
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
task, method='set_boot_device')
def test_vendor_passthru_validate_method_notmatch(self):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
self.node, method='non-existent-method')
with task_manager.acquire(self.context,
[self.node['uuid']]) as task:
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
task, method='non-existent-method')
def test_vendor_passthru_call__set_boot_device(self):
with task_manager.acquire(self.context, [self.node['uuid']],
@ -270,8 +275,6 @@ class IPMINativeDriverTestCase(db_base.DbTestCase):
with mock.patch.object(ipminative.VendorPassthru,
'_set_boot_device') as boot_mock:
self.driver.vendor.vendor_passthru(task,
self.node,
method='set_boot_device',
device='pxe')
boot_mock.assert_called_once_with(task, self.node,
'pxe', False)
boot_mock.assert_called_once_with(task, 'pxe', False)

View File

@ -377,7 +377,7 @@ class IPMIToolDriverTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context,
[self.node['uuid']]) as task:
self.driver.vendor._set_boot_device(task, self.node, 'pxe')
self.driver.vendor._set_boot_device(task, 'pxe')
mock_exec.assert_called_once_with(self.info, "chassis bootdev pxe")
@ -386,7 +386,6 @@ class IPMIToolDriverTestCase(db_base.DbTestCase):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor._set_boot_device,
task,
self.node,
'fake-device')
def test_reboot_ok(self):
@ -429,25 +428,29 @@ class IPMIToolDriverTestCase(db_base.DbTestCase):
self.assertEqual(manager.mock_calls, expected)
def test_vendor_passthru_validate__set_boot_device_good(self):
self.driver.vendor.validate(self.node,
method='set_boot_device',
device='pxe')
with task_manager.acquire(self.context, self.node['uuid']) as task:
self.driver.vendor.validate(task,
method='set_boot_device',
device='pxe')
def test_vendor_passthru_validate__set_boot_device_fail(self):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
self.node, method='set_boot_device',
device='fake')
with task_manager.acquire(self.context, self.node['uuid']) as task:
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
task, method='set_boot_device',
device='fake')
def test_vendor_passthru_validate__set_boot_device_fail_no_device(self):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
self.node, method='set_boot_device')
with task_manager.acquire(self.context, self.node['uuid']) as task:
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
task, method='set_boot_device')
def test_vendor_passthru_validate_method_notmatch(self):
self.assertRaises(exception.InvalidParameterValue,
self.driver.vendor.validate,
self.node, method='fake_method')
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_vendor_passthru_call_set_boot_device(self):
with task_manager.acquire(self.context, [self.node['uuid']],
@ -455,11 +458,9 @@ class IPMIToolDriverTestCase(db_base.DbTestCase):
with mock.patch.object(ipmi.VendorPassthru,
'_set_boot_device') as boot_mock:
self.driver.vendor.vendor_passthru(task,
self.node,
method='set_boot_device',
device='pxe')
boot_mock.assert_called_once_with(task, self.node,
'pxe', False)
boot_mock.assert_called_once_with(task, 'pxe', False)
@mock.patch.object(ipmi, '_exec_ipmitool')
def test_validate_ok(self, exec_mock):

View File

@ -692,7 +692,7 @@ class PXEDriverTestCase(db_base.DbTestCase):
def test_vendor_passthru_validate_good(self):
with task_manager.acquire(self.context, [self.node['uuid']],
shared=True) as task:
task.resources[0].driver.vendor.validate(task, self.node,
task.resources[0].driver.vendor.validate(task,
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
key='fake-56789')
@ -701,7 +701,7 @@ class PXEDriverTestCase(db_base.DbTestCase):
shared=True) as task:
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.validate,
task, self.node, method='pass_deploy_info',
task, method='pass_deploy_info',
key='fake-56789')
def test_vendor_passthru_validate_key_notmatch(self):
@ -709,7 +709,7 @@ class PXEDriverTestCase(db_base.DbTestCase):
shared=True) as task:
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.validate,
task, self.node, method='pass_deploy_info',
task, method='pass_deploy_info',
address='123456', iqn='aaa-bbb',
key='fake-12345')
@ -749,7 +749,6 @@ class PXEDriverTestCase(db_base.DbTestCase):
update_neutron_mock.assert_called_once_with(task,
self.node)
node_set_boot_mock.assert_called_once_with(task,
self.node,
'pxe',
persistent=True)
node_power_mock.assert_called_once_with(task,
@ -810,9 +809,10 @@ class PXEDriverTestCase(db_base.DbTestCase):
fake_deploy))
with task_manager.acquire(self.context, self.node.uuid) as task:
task.resources[0].driver.vendor.vendor_passthru(task, self.node,
task.resources[0].driver.vendor.vendor_passthru(task,
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
key='fake-56789')
self.node.refresh(self.context)
self.assertEqual(states.ACTIVE, self.node.provision_state)
self.assertEqual(states.POWER_ON, self.node.power_state)
self.assertIsNone(self.node.last_error)
@ -832,9 +832,10 @@ class PXEDriverTestCase(db_base.DbTestCase):
fake_deploy))
with task_manager.acquire(self.context, [self.node.uuid]) as task:
task.resources[0].driver.vendor.vendor_passthru(task, self.node,
task.resources[0].driver.vendor.vendor_passthru(task,
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
key='fake-56789')
self.node.refresh(self.context)
self.assertEqual(states.DEPLOYFAIL, self.node.provision_state)
self.assertEqual(states.POWER_OFF, self.node.power_state)
self.assertIsNotNone(self.node.last_error)
@ -854,9 +855,10 @@ class PXEDriverTestCase(db_base.DbTestCase):
fake_deploy))
with task_manager.acquire(self.context, [self.node.uuid]) as task:
task.resources[0].driver.vendor.vendor_passthru(task, self.node,
task.resources[0].driver.vendor.vendor_passthru(task,
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
key='fake-56789', error='test ramdisk error')
self.node.refresh(self.context)
self.assertEqual(states.DEPLOYFAIL, self.node.provision_state)
self.assertEqual(states.POWER_OFF, self.node.power_state)
self.assertIsNotNone(self.node.last_error)
@ -868,9 +870,10 @@ class PXEDriverTestCase(db_base.DbTestCase):
self.node.save(self.context)
with task_manager.acquire(self.context, [self.node.uuid]) as task:
task.resources[0].driver.vendor.vendor_passthru(task, self.node,
task.resources[0].driver.vendor.vendor_passthru(task,
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
key='fake-56789', error='test ramdisk error')
self.node.refresh(self.context)
self.assertEqual('FAKE', self.node.provision_state)
self.assertEqual(states.POWER_ON, self.node.power_state)
@ -878,7 +881,7 @@ class PXEDriverTestCase(db_base.DbTestCase):
with task_manager.acquire(self.context, [self.node['uuid']]) as task:
with mock.patch.object(task.driver.vendor, '_continue_deploy') \
as _continue_deploy_mock:
task.driver.vendor.vendor_passthru(task, self.node,
task.driver.vendor.vendor_passthru(task,
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
key='fake-56789')
# lock elevated w/o exception

View File

@ -387,14 +387,14 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=True) as task:
for method in seamicro.VENDOR_PASSTHRU_METHODS:
task.resources[0].driver.vendor.validate(
task, self.node, **{'method': method})
task, **{'method': method})
def test_vendor_passthru_validate_fail(self):
with task_manager.acquire(self.context, [self.node['uuid']],
shared=True) as task:
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.validate,
task, self.node, **{'method': 'invalid_method'})
task, **{'method': 'invalid_method'})
@mock.patch.object(seamicro, '_get_server')
def test_set_node_vlan_id_good(self, mock_get_server):
@ -405,7 +405,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
kwargs = {'vlan_id': vlan_id, 'method': 'set_node_vlan_id'}
task.resources[0].driver.vendor.\
vendor_passthru(task, self.node, **kwargs)
vendor_passthru(task, **kwargs)
mock_get_server.assert_called_once_with(info)
def test_set_node_vlan_id_no_input(self):
@ -414,7 +414,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node,
vendor_passthru, task,
**{'method': 'set_node_vlan_id'})
@mock.patch.object(seamicro, '_get_server')
@ -432,7 +432,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
kwargs = {'vlan_id': vlan_id, 'method': 'set_node_vlan_id'}
self.assertRaises(exception.IronicException,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node, **kwargs)
vendor_passthru, task, **kwargs)
mock_get_server.assert_called_once_with(info)
@ -448,7 +448,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
kwargs = {'volume_id': volume_id, 'method': 'attach_volume'}
task.resources[0].driver.vendor.\
vendor_passthru(task, self.node, **kwargs)
vendor_passthru(task, **kwargs)
mock_get_server.assert_called_once_with(info)
@mock.patch.object(seamicro, '_get_server')
@ -465,8 +465,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
kwargs = {'volume_id': volume_id, 'method': 'attach_volume'}
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node,
**kwargs)
vendor_passthru, task, **kwargs)
@mock.patch.object(seamicro, '_get_server')
@mock.patch.object(seamicro, '_validate_volume')
@ -486,7 +485,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
kwargs = {'volume_id': volume_id, 'method': 'attach_volume'}
self.assertRaises(exception.IronicException,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node, **kwargs)
vendor_passthru, task, **kwargs)
mock_get_server.assert_called_once_with(info)
@ -506,7 +505,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
kwargs = {'volume_size': volume_size, 'method': "attach_volume"}
task.resources[0].driver.vendor.\
vendor_passthru(task, self.node, **kwargs)
vendor_passthru(task, **kwargs)
mock_get_server.assert_called_once_with(info)
mock_create_volume.assert_called_once_with(info, volume_size)
@ -516,7 +515,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node,
vendor_passthru, task,
**{'method': 'attach_volume'})
@mock.patch.object(seamicro, '_get_server')
@ -528,7 +527,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
kwargs = {'device': boot_device, 'method': 'set_boot_device'}
task.resources[0].driver.vendor.\
vendor_passthru(task, self.node, **kwargs)
vendor_passthru(task, **kwargs)
mock_get_server.assert_called_once_with(info)
def test_set_boot_device_no_input(self):
@ -537,7 +536,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
shared=False) as task:
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node,
vendor_passthru, task,
**{'method': 'set_boot_device'})
@mock.patch.object(seamicro, '_get_server')
@ -550,7 +549,7 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
kwargs = {'device': boot_device, 'method': 'set_boot_device'}
self.assertRaises(exception.InvalidParameterValue,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node, **kwargs)
vendor_passthru, task, **kwargs)
@mock.patch.object(seamicro, '_get_server')
def test_set_boot_device_fail(self, mock_get_server):
@ -567,6 +566,6 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase):
kwargs = {'device': boot_device, 'method': 'set_boot_device'}
self.assertRaises(exception.IronicException,
task.resources[0].driver.vendor.
vendor_passthru, task, self.node, **kwargs)
vendor_passthru, task, **kwargs)
mock_get_server.assert_called_once_with(info)

View File

@ -56,18 +56,16 @@ class UtilsTestCase(base.TestCase):
@mock.patch.object(fake.FakeVendorB, 'vendor_passthru')
def test_vendor_interface_route_valid_method(self, mock_fakeb_vendor,
mock_fakea_vendor):
self.driver.vendor.vendor_passthru('task', 'node',
self.driver.vendor.vendor_passthru('task',
method='first_method',
param1='fake1', param2='fake2')
mock_fakea_vendor.assert_called_once_with('task',
'node',
method='first_method',
param1='fake1', param2='fake2')
self.driver.vendor.vendor_passthru('task', 'node',
self.driver.vendor.vendor_passthru('task',
method='second_method',
param1='fake1', param2='fake2')
mock_fakeb_vendor.assert_called_once_with('task',
'node',
method='second_method',
param1='fake1', param2='fake2')