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):
|
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.
|
:param node: Single node object.
|
||||||
:raises: InvalidParameterValue
|
: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):
|
def get_power_state(self, task, node):
|
||||||
"""Get the current power state.
|
"""Get the current power state.
|
||||||
|
@ -20,6 +20,7 @@ import paramiko
|
|||||||
|
|
||||||
from ironic.common import exception
|
from ironic.common import exception
|
||||||
from ironic.common import states
|
from ironic.common import states
|
||||||
|
from ironic.common import utils
|
||||||
from ironic.conductor import task_manager
|
from ironic.conductor import task_manager
|
||||||
from ironic.db import api as dbapi
|
from ironic.db import api as dbapi
|
||||||
from ironic.drivers.modules import ssh
|
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)
|
node_macs = ssh._get_nodes_mac_addresses(task, self.node)
|
||||||
self.assertEqual(node_macs, ['aa:bb:cc', 'dd:ee:ff'])
|
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):
|
def test_reboot_good(self):
|
||||||
info = ssh._parse_driver_info(self.node)
|
info = ssh._parse_driver_info(self.node)
|
||||||
info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"]
|
info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user