Merge "handle invalid seamicro_api_version"
This commit is contained in:
commit
c6b478d8b2
|
@ -88,7 +88,11 @@ def _get_client(*args, **kwargs):
|
|||
cl_kwargs = {'username': kwargs['username'],
|
||||
'password': kwargs['password'],
|
||||
'auth_url': kwargs['api_endpoint']}
|
||||
return seamicro_client.Client(kwargs['api_version'], **cl_kwargs)
|
||||
try:
|
||||
return seamicro_client.Client(kwargs['api_version'], **cl_kwargs)
|
||||
except seamicro_client_exception.UnsupportedVersion as e:
|
||||
raise exception.InvalidParameterValue(_(
|
||||
"Invalid 'seamicro_api_version' parameter. Reason: %s.") % e)
|
||||
|
||||
|
||||
def _parse_driver_info(node):
|
||||
|
@ -140,6 +144,7 @@ def _get_power_status(node):
|
|||
"""Get current power state of this node
|
||||
|
||||
:param node: Ironic node one of :class:`ironic.db.models.Node`
|
||||
:raises: InvalidParameterValue if a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue if required seamicro parameters are
|
||||
missing.
|
||||
:raises: ServiceUnavailable on an error from SeaMicro Client.
|
||||
|
@ -169,6 +174,7 @@ def _power_on(node, timeout=None):
|
|||
|
||||
:param node: An Ironic node object.
|
||||
:param timeout: Time in seconds to wait till power on is complete.
|
||||
:raises: InvalidParameterValue if a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue if required seamicro parameters are
|
||||
missing.
|
||||
:returns: Power state of the given node.
|
||||
|
@ -208,6 +214,7 @@ def _power_off(node, timeout=None):
|
|||
|
||||
:param node: Ironic node one of :class:`ironic.db.models.Node`
|
||||
:param timeout: Time in seconds to wait till power off is compelete
|
||||
:raises: InvalidParameterValue if a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue if required seamicro parameters are
|
||||
missing.
|
||||
:returns: Power state of the given node
|
||||
|
@ -246,6 +253,7 @@ def _reboot(node, timeout=None):
|
|||
"""Reboot this node
|
||||
:param node: Ironic node one of :class:`ironic.db.models.Node`
|
||||
:param timeout: Time in seconds to wait till reboot is compelete
|
||||
:raises: InvalidParameterValue if a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue if required seamicro parameters are
|
||||
missing.
|
||||
:returns: Power state of the given node
|
||||
|
@ -350,6 +358,7 @@ class Power(base.PowerInterface):
|
|||
|
||||
:param task: a TaskManager instance containing the node to act on.
|
||||
:raises: ServiceUnavailable on an error from SeaMicro Client.
|
||||
:raises: InvalidParameterValue if a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue when a required parameter is missing
|
||||
:returns: power state. One of :class:`ironic.common.states`.
|
||||
|
||||
|
@ -365,7 +374,8 @@ class Power(base.PowerInterface):
|
|||
:param task: a TaskManager instance containing the node to act on.
|
||||
:param pstate: Either POWER_ON or POWER_OFF from :class:
|
||||
`ironic.common.states`.
|
||||
:raises: InvalidParameterValue if an invalid power state was specified.
|
||||
:raises: InvalidParameterValue if an invalid power state was specified
|
||||
or a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue when a required parameter is missing
|
||||
:raises: PowerStateFailure if the desired power state couldn't be set.
|
||||
"""
|
||||
|
@ -386,6 +396,7 @@ class Power(base.PowerInterface):
|
|||
"""Cycles the power to the task's node.
|
||||
|
||||
:param task: a TaskManager instance containing the node to act on.
|
||||
:raises: InvalidParameterValue if a seamicro parameter is invalid.
|
||||
:raises: MissingParameterValue if required seamicro parameters are
|
||||
missing.
|
||||
:raises: PowerStateFailure if the final state of the node is not
|
||||
|
@ -521,7 +532,7 @@ class Management(base.ManagementInterface):
|
|||
persist to all future boots, False if not.
|
||||
Default: False. Ignored by this driver.
|
||||
:raises: InvalidParameterValue if an invalid boot device is
|
||||
specified or if required seamicro parameters are missing.
|
||||
specified or if a seamicro parameter is invalid.
|
||||
:raises: IronicException on an error from seamicro-client.
|
||||
:raises: MissingParameterValue when a required parameter is missing
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
import uuid
|
||||
|
||||
import mock
|
||||
from seamicroclient import client as seamicro_client
|
||||
from seamicroclient import exceptions as seamicro_client_exception
|
||||
|
||||
from ironic.common import boot_devices
|
||||
|
@ -153,6 +154,27 @@ class SeaMicroPrivateMethodsTestCase(base.TestCase):
|
|||
self.patcher = mock.patch('eventlet.greenthread.sleep')
|
||||
self.mock_sleep = self.patcher.start()
|
||||
|
||||
@mock.patch.object(seamicro_client, "Client")
|
||||
def test__get_client(self, mock_client):
|
||||
driver_info = seamicro._parse_driver_info(self.node)
|
||||
args = {'username': driver_info['username'],
|
||||
'password': driver_info['password'],
|
||||
'auth_url': driver_info['api_endpoint']}
|
||||
seamicro._get_client(**driver_info)
|
||||
mock_client.assert_called_once_with(driver_info['api_version'], **args)
|
||||
|
||||
@mock.patch.object(seamicro_client, "Client")
|
||||
def test__get_client_fail(self, mock_client):
|
||||
driver_info = seamicro._parse_driver_info(self.node)
|
||||
args = {'username': driver_info['username'],
|
||||
'password': driver_info['password'],
|
||||
'auth_url': driver_info['api_endpoint']}
|
||||
mock_client.side_effect = seamicro_client_exception.UnsupportedVersion
|
||||
self.assertRaises(exception.InvalidParameterValue,
|
||||
seamicro._get_client,
|
||||
**driver_info)
|
||||
mock_client.assert_called_once_with(driver_info['api_version'], **args)
|
||||
|
||||
@mock.patch.object(seamicro, "_get_server")
|
||||
def test__get_power_status_on(self, mock_get_server):
|
||||
mock_get_server.return_value = self.Server(active=True)
|
||||
|
|
|
@ -42,6 +42,7 @@ if not seamicroclient:
|
|||
smc.client = mock.Mock()
|
||||
smc.exceptions = mock.Mock()
|
||||
smc.exceptions.ClientException = Exception
|
||||
smc.exceptions.UnsupportedVersion = Exception
|
||||
sys.modules['seamicroclient'] = smc
|
||||
sys.modules['seamicroclient.client'] = smc.client
|
||||
sys.modules['seamicroclient.exceptions'] = smc.exceptions
|
||||
|
|
Loading…
Reference in New Issue