Merge "Check connectivity in SSH driver 'validate' method"
This commit is contained in:
commit
2874979086
@ -262,12 +262,19 @@ class SSHPower(base.PowerInterface):
|
||||
"""
|
||||
|
||||
def validate(self, node):
|
||||
"""Check that node['driver_info'] contains the requisite fields.
|
||||
"""Check that node 'driver_info' is valid.
|
||||
|
||||
Check that node 'driver_info' contains the requisite fields and SSH
|
||||
connection can be established.
|
||||
|
||||
:param node: Single node object.
|
||||
:raises: InvalidParameterValue
|
||||
"""
|
||||
_parse_driver_info(node)
|
||||
try:
|
||||
_get_connection(node)
|
||||
except exception.SSHConnectFailed as e:
|
||||
raise exception.InvalidParameterValue(_("SSH connection cannot"
|
||||
" be established: %s") % e)
|
||||
|
||||
def get_power_state(self, task, node):
|
||||
"""Get the current power state.
|
||||
|
@ -20,6 +20,7 @@ import paramiko
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.common import states
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.db import api as dbapi
|
||||
from ironic.drivers.modules import ssh
|
||||
@ -460,6 +461,22 @@ class SSHDriverTestCase(db_base.DbTestCase):
|
||||
node_macs = ssh._get_nodes_mac_addresses(task, self.node)
|
||||
self.assertEqual(node_macs, ['aa:bb:cc', 'dd:ee:ff'])
|
||||
|
||||
def test__validate_info_ssh_connect_failed(self):
|
||||
info = ssh._parse_driver_info(self.node)
|
||||
self.get_conn_patcher.stop()
|
||||
self.get_conn_mock = None
|
||||
|
||||
with mock.patch.object(utils, 'ssh_connect') \
|
||||
as ssh_connect_mock:
|
||||
ssh_connect_mock.side_effect = exception.SSHConnectFailed(
|
||||
host='fake')
|
||||
with task_manager.acquire(self.context, [info['uuid']],
|
||||
shared=False) as task:
|
||||
self.assertRaises(exception.InvalidParameterValue,
|
||||
task.resources[0].driver.power.validate,
|
||||
self.node)
|
||||
ssh_connect_mock.assert_called_once()
|
||||
|
||||
def test_reboot_good(self):
|
||||
info = ssh._parse_driver_info(self.node)
|
||||
info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user