diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-08-13 14:19:45 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-08-13 14:19:45 +0000 |
commit | 1929555815f91212812cd4662d40ac2714df8b3b (patch) | |
tree | 59e6d582789b4812d1ef8cdcf3a10b5d518adab2 /ironic | |
parent | df8b6f06a51779d13c94a9f364f730586d5d48b2 (diff) | |
parent | 3419b38b1128a44147733b3ff003cdf0f61bebc6 (diff) | |
download | ironic-1929555815f91212812cd4662d40ac2714df8b3b.tar.gz |
Merge "Raise MissingParameterValue instead of Invalid"
Diffstat (limited to 'ironic')
-rw-r--r-- | ironic/api/controllers/v1/node.py | 2 | ||||
-rw-r--r-- | ironic/api/controllers/v1/port.py | 2 | ||||
-rw-r--r-- | ironic/common/exception.py | 4 | ||||
-rw-r--r-- | ironic/conductor/manager.py | 49 | ||||
-rw-r--r-- | ironic/conductor/rpcapi.py | 9 | ||||
-rw-r--r-- | ironic/drivers/base.py | 12 | ||||
-rw-r--r-- | ironic/drivers/modules/fake.py | 6 | ||||
-rw-r--r-- | ironic/drivers/modules/ilo/common.py | 19 | ||||
-rw-r--r-- | ironic/drivers/modules/ipminative.py | 25 | ||||
-rw-r--r-- | ironic/drivers/modules/ipmitool.py | 35 | ||||
-rw-r--r-- | ironic/drivers/modules/pxe.py | 17 | ||||
-rw-r--r-- | ironic/drivers/modules/seamicro.py | 29 | ||||
-rw-r--r-- | ironic/drivers/modules/ssh.py | 13 | ||||
-rw-r--r-- | ironic/drivers/utils.py | 5 | ||||
-rw-r--r-- | ironic/tests/conductor/test_conductor_utils.py | 4 | ||||
-rw-r--r-- | ironic/tests/conductor/test_manager.py | 4 | ||||
-rw-r--r-- | ironic/tests/drivers/ilo/test_common.py | 12 | ||||
-rw-r--r-- | ironic/tests/drivers/test_ipminative.py | 4 | ||||
-rw-r--r-- | ironic/tests/drivers/test_ipmitool.py | 8 | ||||
-rw-r--r-- | ironic/tests/drivers/test_pxe.py | 10 | ||||
-rw-r--r-- | ironic/tests/drivers/test_seamicro.py | 10 | ||||
-rw-r--r-- | ironic/tests/drivers/test_ssh.py | 10 |
22 files changed, 191 insertions, 98 deletions
diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py index e659b9991..df8b0a8b9 100644 --- a/ironic/api/controllers/v1/node.py +++ b/ironic/api/controllers/v1/node.py @@ -589,7 +589,7 @@ class NodesController(rest.RestController): maintenance, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self.from_chassis and not chassis_uuid: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Chassis id not specified.")) limit = api_utils.validate_limit(limit) diff --git a/ironic/api/controllers/v1/port.py b/ironic/api/controllers/v1/port.py index 0158dc3f2..cb9961ef8 100644 --- a/ironic/api/controllers/v1/port.py +++ b/ironic/api/controllers/v1/port.py @@ -177,7 +177,7 @@ class PortsController(rest.RestController): sort_key, sort_dir, expand=False, resource_url=None): if self.from_nodes and not node_uuid: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Node id not specified.")) limit = api_utils.validate_limit(limit) diff --git a/ironic/common/exception.py b/ironic/common/exception.py index 7c7dbdd09..7209b065a 100644 --- a/ironic/common/exception.py +++ b/ironic/common/exception.py @@ -181,6 +181,10 @@ class InvalidParameterValue(Invalid): message = _("%(err)s") +class MissingParameterValue(InvalidParameterValue): + message = _("%(err)s") + + class NotFound(IronicException): message = _("Resource could not be found.") code = 404 diff --git a/ironic/conductor/manager.py b/ironic/conductor/manager.py index 64e53a09e..5d8e27e48 100644 --- a/ironic/conductor/manager.py +++ b/ironic/conductor/manager.py @@ -230,6 +230,7 @@ class ConductorManager(periodic_task.PeriodicTasks): return self.run_periodic_tasks(context, raise_on_error=raise_on_error) @messaging.expected_exceptions(exception.InvalidParameterValue, + exception.MissingParameterValue, exception.NodeLocked, exception.NodeInWrongPowerState) def update_node(self, context, node_obj): @@ -273,6 +274,7 @@ class ConductorManager(periodic_task.PeriodicTasks): return node_obj @messaging.expected_exceptions(exception.InvalidParameterValue, + exception.MissingParameterValue, exception.NoFreeConductorWorker, exception.NodeLocked) def change_node_power_state(self, context, node_id, new_state): @@ -303,7 +305,8 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NoFreeConductorWorker, exception.NodeLocked, exception.InvalidParameterValue, - exception.UnsupportedDriverExtension) + exception.UnsupportedDriverExtension, + exception.MissingParameterValue) def vendor_passthru(self, context, node_id, driver_method, info): """RPC method to encapsulate vendor action. @@ -316,6 +319,7 @@ class ConductorManager(periodic_task.PeriodicTasks): :param driver_method: the name of the vendor method. :param info: vendor method args. :raises: InvalidParameterValue if supplied info is not valid. + :raises: MissingParameterValue if missing supplied info :raises: UnsupportedDriverExtension if current driver does not have vendor interface or method is unsupported. :raises: NoFreeConductorWorker when there is no free worker to start @@ -340,6 +344,7 @@ class ConductorManager(periodic_task.PeriodicTasks): method=driver_method, **info) @messaging.expected_exceptions(exception.InvalidParameterValue, + exception.MissingParameterValue, exception.UnsupportedDriverExtension, exception.DriverNotFound) def driver_vendor_passthru(self, context, driver_name, driver_method, @@ -352,6 +357,7 @@ class ConductorManager(periodic_task.PeriodicTasks): :param driver_name: name of the driver on which to call the method. :param driver_method: name of the vendor method, for use by the driver. :param info: user-supplied data to pass through to the driver. + :raises: MissingParameterValue if missing supplied info :raises: InvalidParameterValue if supplied info is not valid. :raises: UnsupportedDriverExtension if current driver does not have vendor interface, if the vendor interface does not implement @@ -404,7 +410,9 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NoFreeConductorWorker, exception.NodeLocked, exception.NodeInMaintenance, - exception.InstanceDeployFailure) + exception.InstanceDeployFailure, + exception.InvalidParameterValue, + exception.MissingParameterValue) def do_node_deploy(self, context, node_id, rebuild=False): """RPC method to initiate deployment to a node. @@ -451,7 +459,8 @@ class ConductorManager(periodic_task.PeriodicTasks): try: task.driver.deploy.validate(task) - except exception.InvalidParameterValue as e: + except (exception.InvalidParameterValue, + exception.MissingParameterValue) as e: raise exception.InstanceDeployFailure(_( "RPC do_node_deploy failed to validate deploy info. " "Error: %(msg)s") % {'msg': e}) @@ -503,7 +512,9 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NoFreeConductorWorker, exception.NodeLocked, - exception.InstanceDeployFailure) + exception.InstanceDeployFailure, + exception.InvalidParameterValue, + exception.MissingParameterValue) def do_node_tear_down(self, context, node_id): """RPC method to tear down an existing node deployment. @@ -532,7 +543,8 @@ class ConductorManager(periodic_task.PeriodicTasks): try: task.driver.deploy.validate(task) - except exception.InvalidParameterValue as e: + except (exception.InvalidParameterValue, + exception.MissingParameterValue) as e: raise exception.InstanceDeployFailure(_( "RPC do_node_tear_down failed to validate deploy info. " "Error: %(msg)s") % {'msg': e}) @@ -614,7 +626,8 @@ class ConductorManager(periodic_task.PeriodicTasks): if node.power_state is None: try: task.driver.power.validate(task) - except exception.InvalidParameterValue: + except (exception.InvalidParameterValue, + exception.MissingParameterValue) as e: return try: @@ -838,7 +851,8 @@ class ConductorManager(periodic_task.PeriodicTasks): iface.validate(task) result = True except (exception.InvalidParameterValue, - exception.UnsupportedDriverExtension) as e: + exception.UnsupportedDriverExtension, + exception.MissingParameterValue) as e: result = False reason = str(e) else: @@ -927,7 +941,8 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NodeLocked, exception.UnsupportedDriverExtension, exception.NodeConsoleNotEnabled, - exception.InvalidParameterValue) + exception.InvalidParameterValue, + exception.MissingParameterValue) def get_console_information(self, context, node_id): """Get connection information about the console. @@ -937,6 +952,7 @@ class ConductorManager(periodic_task.PeriodicTasks): support console. :raises: NodeConsoleNotEnabled if the console is not enabled. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if missing supplied info. """ LOG.debug('RPC get_console_information called for node %s' % node_id) @@ -955,7 +971,8 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NoFreeConductorWorker, exception.NodeLocked, exception.UnsupportedDriverExtension, - exception.InvalidParameterValue) + exception.InvalidParameterValue, + exception.MissingParameterValue) def set_console_mode(self, context, node_id, enabled): """Enable/Disable the console. @@ -969,6 +986,7 @@ class ConductorManager(periodic_task.PeriodicTasks): :raises: UnsupportedDriverExtension if the node's driver doesn't support console. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if missing supplied info. :raises: NoFreeConductorWorker when there is no free worker to start async task """ @@ -1135,7 +1153,8 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NodeLocked, exception.UnsupportedDriverExtension, - exception.InvalidParameterValue) + exception.InvalidParameterValue, + exception.MissingParameterValue) def set_boot_device(self, context, node_id, device, persistent=False): """Set the boot device for a node. @@ -1152,7 +1171,7 @@ class ConductorManager(periodic_task.PeriodicTasks): support management. :raises: InvalidParameterValue when the wrong driver info is specified or an invalid boot device is specified. - + :raises: MissingParameterValue if missing supplied info. """ LOG.debug('RPC set_boot_device called for node %(node)s with ' 'device %(device)s', {'node': node_id, 'device': device}) @@ -1167,7 +1186,8 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NodeLocked, exception.UnsupportedDriverExtension, - exception.InvalidParameterValue) + exception.InvalidParameterValue, + exception.MissingParameterValue) def get_boot_device(self, context, node_id): """Get the current boot device. @@ -1180,6 +1200,7 @@ class ConductorManager(periodic_task.PeriodicTasks): support management. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if missing supplied info. :returns: a dictionary containing: :boot_device: the boot device, one of @@ -1198,7 +1219,8 @@ class ConductorManager(periodic_task.PeriodicTasks): @messaging.expected_exceptions(exception.NodeLocked, exception.UnsupportedDriverExtension, - exception.InvalidParameterValue) + exception.InvalidParameterValue, + exception.MissingParameterValue) def get_supported_boot_devices(self, context, node_id): """Get the list of supported devices. @@ -1211,6 +1233,7 @@ class ConductorManager(periodic_task.PeriodicTasks): support management. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if missing supplied info. :returns: A list with the supported boot devices defined in :mod:`ironic.common.boot_devices`. diff --git a/ironic/conductor/rpcapi.py b/ironic/conductor/rpcapi.py index 3c9164245..177424a93 100644 --- a/ironic/conductor/rpcapi.py +++ b/ironic/conductor/rpcapi.py @@ -156,6 +156,7 @@ class ConductorAPI(object): :param info: info for node driver. :param topic: RPC topic. Defaults to self.topic. :raises: InvalidParameterValue if supplied info is not valid. + :raises: MissingParameterValue if a required parameter is missing :raises: UnsupportedDriverExtension if current driver does not have vendor interface. :raises: NoFreeConductorWorker when there is no free worker to start @@ -176,6 +177,7 @@ class ConductorAPI(object): :param info: data to pass through to the driver. :param topic: RPC topic. Defaults to self.topic. :raises: InvalidParameterValue for parameter errors. + :raises: MissingParameterValue if a required parameter is missing :raises: UnsupportedDriverExtension if the driver doesn't have a vendor interface, or if the vendor interface does not support the specified driver_method. @@ -196,6 +198,7 @@ class ConductorAPI(object): :param topic: RPC topic. Defaults to self.topic. :raises: InstanceDeployFailure :raises: InvalidParameterValue if validation fails + :raises: MissingParameterValue if a required parameter is missing :raises: NoFreeConductorWorker when there is no free worker to start async task. @@ -215,6 +218,7 @@ class ConductorAPI(object): :param topic: RPC topic. Defaults to self.topic. :raises: InstanceDeployFailure :raises: InvalidParameterValue if validation fails + :raises: MissingParameterValue if a required parameter is missing :raises: NoFreeConductorWorker when there is no free worker to start async task. @@ -277,6 +281,7 @@ class ConductorAPI(object): :raises: UnsupportedDriverExtension if the node's driver doesn't support console. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if a required parameter is missing """ cctxt = self.client.prepare(topic=topic or self.topic, version='1.11') return cctxt.call(context, 'get_console_information', node_id=node_id) @@ -292,6 +297,7 @@ class ConductorAPI(object): :raises: UnsupportedDriverExtension if the node's driver doesn't support console. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if a required parameter is missing :raises: NoFreeConductorWorker when there is no free worker to start async task. """ @@ -348,6 +354,7 @@ class ConductorAPI(object): support management. :raises: InvalidParameterValue when the wrong driver info is specified or an invalid boot device is specified. + :raises: MissingParameterValue if missing supplied info. """ cctxt = self.client.prepare(topic=topic or self.topic, version='1.17') return cctxt.call(context, 'set_boot_device', node_id=node_id, @@ -365,6 +372,7 @@ class ConductorAPI(object): support management. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if missing supplied info. :returns: a dictionary containing: :boot_device: the boot device, one of @@ -388,6 +396,7 @@ class ConductorAPI(object): support management. :raises: InvalidParameterValue when the wrong driver info is specified. + :raises: MissingParameterValue if missing supplied info. :returns: A list with the supported boot devices defined in :mod:`ironic.common.boot_devices`. diff --git a/ironic/drivers/base.py b/ironic/drivers/base.py index 0a6446a26..7b4c1f929 100644 --- a/ironic/drivers/base.py +++ b/ironic/drivers/base.py @@ -126,6 +126,7 @@ class DeployInterface(object): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue + :raises: MissingParameterValue """ @abc.abstractmethod @@ -229,6 +230,7 @@ class PowerInterface(object): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue + :raises: MissingParameterValue """ @abc.abstractmethod @@ -236,6 +238,7 @@ class PowerInterface(object): """Return the power state of the task's node. :param task: a TaskManager instance containing the node to act on. + :raises: MissingParameterValue if a required parameter is missing. :returns: a power state. One of :mod:`ironic.common.states`. """ @@ -245,6 +248,7 @@ class PowerInterface(object): :param task: a TaskManager instance containing the node to act on. :param power_state: Any power state from :mod:`ironic.common.states`. + :raises: MissingParameterValue if a required parameter is missing. """ @abc.abstractmethod @@ -252,6 +256,7 @@ class PowerInterface(object): """Perform a hard reboot of the task's node. :param task: a TaskManager instance containing the node to act on. + :raises: MissingParameterValue if a required parameter is missing. """ @@ -277,6 +282,7 @@ class ConsoleInterface(object): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue + :raises: MissingParameterValue """ @abc.abstractmethod @@ -324,6 +330,7 @@ class RescueInterface(object): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue + :raises: MissingParameterValue """ @abc.abstractmethod @@ -371,6 +378,7 @@ class VendorInterface(object): :raises: UnsupportedDriverExtension if 'method' can not be mapped to the supported interfaces. :raises: InvalidParameterValue if **kwargs does not contain 'method'. + :raises: MissingParameterValue """ @abc.abstractmethod @@ -383,6 +391,7 @@ class VendorInterface(object): :raises: UnsupportedDriverExtension if 'method' can not be mapped to the supported interfaces. :raises: InvalidParameterValue if **kwargs does not contain 'method'. + :raises: MissingParameterValue when a required parameter is missing """ def driver_vendor_passthru(self, context, method, **kwargs): @@ -422,6 +431,7 @@ class ManagementInterface(object): :param task: a task from TaskManager. :raises: InvalidParameterValue + :raises: MissingParameterValue """ @abc.abstractmethod @@ -446,6 +456,7 @@ class ManagementInterface(object): Default: False. :raises: InvalidParameterValue if an invalid boot device is specified. + :raises: MissingParameterValue if a required parameter is missing """ @abc.abstractmethod @@ -456,6 +467,7 @@ class ManagementInterface(object): all drivers support this. :param task: a task from TaskManager. + :raises: MissingParameterValue if a required parameter is missing :returns: a dictionary containing: :boot_device: the boot device, one of :mod:`ironic.common.boot_devices` or None if it is unknown. diff --git a/ironic/drivers/modules/fake.py b/ironic/drivers/modules/fake.py index e2ea7aceb..6474a8d92 100644 --- a/ironic/drivers/modules/fake.py +++ b/ironic/drivers/modules/fake.py @@ -35,7 +35,7 @@ def _raise_unsupported_error(method=None): raise exception.InvalidParameterValue(_( "Unsupported method (%s) passed through to vendor extension.") % method) - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Method not specified when calling vendor extension.")) @@ -100,7 +100,7 @@ class FakeVendorA(base.VendorInterface): if method == 'first_method': bar = kwargs.get('bar') if not bar: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Parameter 'bar' not passed to method 'first_method'.")) return _raise_unsupported_error(method) @@ -128,7 +128,7 @@ class FakeVendorB(base.VendorInterface): if method == 'second_method': bar = kwargs.get('bar') if not bar: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Parameter 'bar' not passed to method 'second_method'.")) return _raise_unsupported_error(method) diff --git a/ironic/drivers/modules/ilo/common.py b/ironic/drivers/modules/ilo/common.py index a386f0294..26650ee1e 100644 --- a/ironic/drivers/modules/ilo/common.py +++ b/ironic/drivers/modules/ilo/common.py @@ -67,8 +67,9 @@ def parse_driver_info(node): :param node: an ironic node object. :returns: a dict containing information from driver_info and default values. - :raises: InvalidParameterValue if some mandatory information - is missing on the node or on invalid inputs. + :raises: InvalidParameterValue on invalid inputs. + :raises: MissingParameterValue if some mandatory information + is missing on the node """ info = node.driver_info d_info = {} @@ -79,6 +80,10 @@ def parse_driver_info(node): d_info[param] = info[param] except KeyError: error_msgs.append(_("'%s' not supplied to IloDriver.") % param) + if error_msgs: + msg = (_("The following parameters were mising while parsing " + "driver_info:\n%s") % "\n".join(error_msgs)) + raise exception.MissingParameterValue(msg) for param in OPTIONAL_PROPERTIES: value = info.get(param, CONF.ilo.get(param)) @@ -105,8 +110,9 @@ def get_ilo_object(node): :param node: an ironic node object. :returns: an IloClient object. - :raises: InvalidParameterValue if some mandatory information - is missing on the node or on invalid inputs. + :raises: InvalidParameterValue on invalid inputs. + :raises: MissingParameterValue if some mandatory information + is missing on the node """ driver_info = parse_driver_info(node) ilo_object = ilo_client.IloClient(driver_info['ilo_address'], @@ -126,8 +132,9 @@ def get_ilo_license(node): :param node: an ironic node object. :returns: a constant defined in this module which refers to the current license installed on the node. - :raises: InvalidParameterValue if some mandatory information - is missing on the node or on invalid inputs. + :raises: InvalidParameterValue on invalid inputs. + :raises: MissingParameterValue if some mandatory information + is missing on the node :raises: IloOperationError if it failed to retrieve the installed licenses from the iLO. """ diff --git a/ironic/drivers/modules/ipminative.py b/ironic/drivers/modules/ipminative.py index 53303c861..517132a4b 100644 --- a/ironic/drivers/modules/ipminative.py +++ b/ironic/drivers/modules/ipminative.py @@ -69,14 +69,14 @@ _BOOT_DEVICES_MAP = { def _parse_driver_info(node): """Gets the bmc access info for the given node. - :raises: InvalidParameterValue when required ipmi credentials + :raises: MissingParameterValue when required ipmi credentials are missing. """ info = node.driver_info or {} missing_info = [key for key in REQUIRED_PROPERTIES if not info.get(key)] if missing_info: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "The following IPMI credentials are not supplied" " to IPMI driver: %s." ) % missing_info) @@ -229,7 +229,7 @@ class NativeIPMIPower(base.PowerInterface): """Check that node['driver_info'] contains IPMI credentials. :param task: a TaskManager instance containing the node to act on. - :raises: InvalidParameterValue when required ipmi credentials + :raises: MissingParameterValue when required ipmi credentials are missing. """ _parse_driver_info(task.node) @@ -240,7 +240,7 @@ class NativeIPMIPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :returns: power state POWER_ON, POWER_OFF or ERROR defined in :class:`ironic.common.states`. - :raises: InvalidParameterValue when required ipmi credentials + :raises: MissingParameterValue when required ipmi credentials are missing. :raises: IPMIFailure when the native ipmi call fails. """ @@ -254,8 +254,10 @@ class NativeIPMIPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :param pstate: a power state that will be set on the task's node. :raises: IPMIFailure when the native ipmi call fails. + :raises: MissingParameterValue when required ipmi credentials + are missing. :raises: InvalidParameterValue when an invalid power state - is specified or required ipmi credentials are missing. + is specified :raises: PowerStateFailure when invalid power state is returned from ipmi. """ @@ -277,7 +279,7 @@ class NativeIPMIPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :raises: IPMIFailure when the native ipmi call fails. - :raises: InvalidParameterValue when required ipmi credentials + :raises: MissingParameterValue when required ipmi credentials are missing. :raises: PowerStateFailure when invalid power state is returned from ipmi. @@ -299,7 +301,7 @@ class NativeIPMIManagement(base.ManagementInterface): task's node contains the required credentials information. :param task: a task from TaskManager. - :raises: InvalidParameterValue when required ipmi credentials + :raises: MissingParameterValue when required ipmi credentials are missing. """ @@ -326,10 +328,11 @@ class NativeIPMIManagement(base.ManagementInterface): :param persistent: Boolean value. True if the boot device will persist to all future boots, False if not. Default: False. - :raises: InvalidParameterValue if an invalid boot device is - specified or if required ipmi parameters are missing. + :raises: InvalidParameterValue if an invalid boot device is specified + or required ipmi credentials are missing. + :raises: MissingParameterValue when required ipmi credentials + are missing. :raises: IPMIFailure on an error from pyghmi. - """ if device not in self.get_supported_boot_devices(): raise exception.InvalidParameterValue(_( @@ -353,7 +356,7 @@ class NativeIPMIManagement(base.ManagementInterface): Returns the current boot device of the node. :param task: a task from TaskManager. - :raises: InvalidParameterValue if required IPMI parameters + :raises: MissingParameterValue if required IPMI parameters are missing. :raises: IPMIFailure on an error from pyghmi. :returns: a dictionary containing: diff --git a/ironic/drivers/modules/ipmitool.py b/ironic/drivers/modules/ipmitool.py index 24faca872..a4a633060 100644 --- a/ironic/drivers/modules/ipmitool.py +++ b/ironic/drivers/modules/ipmitool.py @@ -158,13 +158,14 @@ def _parse_driver_info(node): :param node: the Node of interest. :returns: dictionary of parameters. - :raises: InvalidParameterValue if any required parameters are missing. + :raises: InvalidParameterValue when an invalid value is specified + :raises: MissingParameterValue when a required ipmi parameter is missing. """ info = node.driver_info or {} missing_info = [key for key in REQUIRED_PROPERTIES if not info.get(key)] if missing_info: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "The following IPMI credentials are not supplied" " to IPMI driver: %s." ) % missing_info) @@ -465,6 +466,7 @@ class IPMIPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue if required ipmi parameters are missing. + :raises: MissingParameterValue if a required parameter is missing. """ _parse_driver_info(task.node) @@ -479,6 +481,7 @@ class IPMIPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :returns: one of ironic.common.states POWER_OFF, POWER_ON or ERROR. :raises: InvalidParameterValue if required ipmi parameters are missing. + :raises: MissingParameterValue if a required parameter is missing. :raises: IPMIFailure on an error from ipmitool (from _power_status call). @@ -493,8 +496,8 @@ class IPMIPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :param pstate: The desired power state, one of ironic.common.states POWER_ON, POWER_OFF. - :raises: InvalidParameterValue if required ipmi parameters are missing - or if an invalid power state was specified. + :raises: InvalidParameterValue if an invalid power state was specified. + :raises: MissingParameterValue if required ipmi parameters are missing :raises: PowerStateFailure if the power couldn't be set to pstate. """ @@ -516,7 +519,8 @@ class IPMIPower(base.PowerInterface): """Cycles the power to the task's node. :param task: a TaskManager instance containing the node to act on. - :raises: InvalidParameterValue if required ipmi parameters are missing. + :raises: MissingParameterValue if required ipmi parameters are missing. + :raises: InvalidParameterValue if an invalid power state was specified. :raises: PowerStateFailure if the final state of the node is not POWER_ON. @@ -552,6 +556,7 @@ class IPMIManagement(base.ManagementInterface): :param task: a task from TaskManager. :raises: InvalidParameterValue if required IPMI parameters are missing. + :raises: MissingParameterValue if a required parameter is missing. """ _parse_driver_info(task.node) @@ -578,8 +583,8 @@ class IPMIManagement(base.ManagementInterface): :param persistent: Boolean value. True if the boot device will persist to all future boots, False if not. Default: False. - :raises: InvalidParameterValue if an invalid boot device is - specified or if required ipmi parameters are missing. + :raises: InvalidParameterValue if an invalid boot device is specified + :raises: MissingParameterValue if required ipmi parameters are missing. :raises: IPMIFailure on an error from ipmitool. """ @@ -609,6 +614,7 @@ class IPMIManagement(base.ManagementInterface): :raises: InvalidParameterValue if required IPMI parameters are missing. :raises: IPMIFailure on an error from ipmitool. + :raises: MissingParameterValue if a required parameter is missing. :returns: a dictionary containing: :boot_device: the boot device, one of @@ -655,6 +661,7 @@ class IPMIManagement(base.ManagementInterface): :raises: FailedToGetSensorData when getting the sensor data fails. :raises: FailedToParseSensorData when parsing sensor data fails. :raises: InvalidParameterValue if required ipmi parameters are missing + :raises: MissingParameterValue if a required parameter is missing. :returns: returns a dict of sensor data group by sensor type. """ @@ -680,6 +687,8 @@ class VendorPassthru(base.VendorInterface): :param task: a TaskManager instance. :param raw_bytes: a string of raw bytes to send, e.g. '0x00 0x01' :raises: IPMIFailure on an error from ipmitool. + :raises: MissingParameterValue if a required parameter is missing. + :raises: InvalidParameterValue when an invalid value is specified. """ node_uuid = task.node.uuid @@ -705,6 +714,8 @@ class VendorPassthru(base.VendorInterface): :param task: a TaskManager instance. :param warm: boolean parameter to decide on warm or cold reset. :raises: IPMIFailure on an error from ipmitool. + :raises: MissingParameterValue if a required parameter is missing. + :raises: InvalidParameterValue when an invalid value is specified """ node_uuid = task.node.uuid @@ -745,7 +756,9 @@ class VendorPassthru(base.VendorInterface): :param kwargs: info for action. :raises: InvalidParameterValue if **kwargs does not contain 'method', 'method' is not supported or a byte string is not given for - 'raw_bytes', or required IPMI credentials are missing. + 'raw_bytes'. + :raises: MissingParameterValue if a required parameter is missing. + """ method = kwargs['method'] if method == 'send_raw': @@ -775,6 +788,8 @@ class VendorPassthru(base.VendorInterface): :raises: InvalidParameterValue if required IPMI credentials are missing. :raises: IPMIFailure if ipmitool fails for any method. + :raises: MissingParameterValue when a required parameter is missing + """ method = kwargs['method'] @@ -808,10 +823,12 @@ class IPMIShellinaboxConsole(base.ConsoleInterface): :param task: a task from TaskManager. :raises: InvalidParameterValue + :raises: MissingParameterValue when a required parameter is missing + """ driver_info = _parse_driver_info(task.node) if not driver_info['port']: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "IPMI terminal port not supplied to IPMI driver.")) def start_console(self, task): diff --git a/ironic/drivers/modules/pxe.py b/ironic/drivers/modules/pxe.py index ad22e7f28..ce410d335 100644 --- a/ironic/drivers/modules/pxe.py +++ b/ironic/drivers/modules/pxe.py @@ -122,7 +122,7 @@ def _check_for_missing_params(info_dict, param_prefix=''): missing_info.append(param_prefix + label) if missing_info: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Can not validate PXE bootloader. The following parameters " "were not passed to ironic: %s") % missing_info) @@ -136,6 +136,7 @@ def _parse_driver_info(node): :param node: a single Node. :returns: A dict with the driver_info values. + :raises: MissingParameterValue """ info = node.driver_info d_info = {} @@ -156,6 +157,8 @@ def _parse_instance_info(node): :param node: a single Node. :returns: A dict with the instance_info values. + :raises: MissingParameterValue + :raises: InvalidParameterValue """ info = node.instance_info @@ -204,6 +207,8 @@ def _parse_deploy_info(node): :param node: a single Node. :returns: A dict with the instance_info and driver_info values. + :raises: MissingParameterValue + :raises: InvalidParameterValue """ info = {} info.update(_parse_instance_info(node)) @@ -471,6 +476,7 @@ def _validate_glance_image(ctx, deploy_info): 'kernel_id' and 'ramdisk_id' properties. :raises: InvalidParameterValue. + :raises: MissingParameterValue """ image_id = deploy_info['image_source'] try: @@ -493,7 +499,7 @@ def _validate_glance_image(ctx, deploy_info): if missing_props: props = ', '.join(missing_props) - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Image %(image)s is missing the following properties: " "%(properties)s") % {'image': image_id, 'properties': props}) @@ -509,17 +515,18 @@ class PXEDeploy(base.DeployInterface): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue. + :raises: MissingParameterValue """ node = task.node if not driver_utils.get_node_mac_addresses(task): - raise exception.InvalidParameterValue(_("Node %s does not have " + raise exception.MissingParameterValue(_("Node %s does not have " "any port associated with it.") % node.uuid) d_info = _parse_deploy_info(node) if CONF.pxe.ipxe_enabled: if not CONF.pxe.http_url or not CONF.pxe.http_root: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "iPXE boot is enabled but no HTTP URL or HTTP " "root was specified.")) @@ -652,7 +659,7 @@ class VendorPassthru(base.VendorInterface): missing = [key for key in params.keys() if params[key] is None] if missing: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Parameters %s were not passed to ironic" " for deploy.") % missing) diff --git a/ironic/drivers/modules/seamicro.py b/ironic/drivers/modules/seamicro.py index 0274e0f37..6481d3c27 100644 --- a/ironic/drivers/modules/seamicro.py +++ b/ironic/drivers/modules/seamicro.py @@ -96,13 +96,13 @@ def _parse_driver_info(node): :param node: An Ironic node object. :returns: SeaMicro driver info. - :raises: InvalidParameterValue if any required parameters are missing. + :raises: MissingParameterValue if any required parameters are missing. """ info = node.driver_info or {} missing_info = [key for key in REQUIRED_PROPERTIES if not info.get(key)] if missing_info: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "SeaMicro driver requires the following to be set: %s.") % missing_info) @@ -140,7 +140,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 required seamicro parameters are + :raises: MissingParameterValue if required seamicro parameters are missing. :raises: ServiceUnavailable on an error from SeaMicro Client. :returns: Power state of the given node @@ -169,7 +169,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 required seamicro parameters are + :raises: MissingParameterValue if required seamicro parameters are missing. :returns: Power state of the given node. """ @@ -208,7 +208,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 required seamicro parameters are + :raises: MissingParameterValue if required seamicro parameters are missing. :returns: Power state of the given node """ @@ -246,7 +246,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 required seamicro parameters are + :raises: MissingParameterValue if required seamicro parameters are missing. :returns: Power state of the given node """ @@ -338,7 +338,7 @@ class Power(base.PowerInterface): Check that node 'driver_info' contains the required fields. :param task: a TaskManager instance containing the node to act on. - :raises: InvalidParameterValue if required seamicro parameters are + :raises: MissingParameterValue if required seamicro parameters are missing. """ _parse_driver_info(task.node) @@ -349,10 +349,10 @@ class Power(base.PowerInterface): Poll the host for the current power state of the node. :param task: a TaskManager instance containing the node to act on. - :raises: InvalidParameterValue if required seamicro parameters are - missing. :raises: ServiceUnavailable on an error from SeaMicro Client. + :raises: MissingParameterValue when a required parameter is missing :returns: power state. One of :class:`ironic.common.states`. + """ return _get_power_status(task.node) @@ -366,6 +366,7 @@ class Power(base.PowerInterface): :param pstate: Either POWER_ON or POWER_OFF from :class: `ironic.common.states`. :raises: InvalidParameterValue if an invalid power state was specified. + :raises: MissingParameterValue when a required parameter is missing :raises: PowerStateFailure if the desired power state couldn't be set. """ @@ -385,7 +386,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 required seamicro parameters are + :raises: MissingParameterValue if required seamicro parameters are missing. :raises: PowerStateFailure if the final state of the node is not POWER_ON. @@ -424,7 +425,7 @@ class VendorPassthru(base.VendorInterface): node = task.node vlan_id = kwargs.get('vlan_id') if not vlan_id: - raise exception.InvalidParameterValue(_("No vlan id provided")) + raise exception.MissingParameterValue(_("No vlan id provided")) seamicro_info = _parse_driver_info(node) try: @@ -461,7 +462,7 @@ class VendorPassthru(base.VendorInterface): if volume_id is None: volume_size = kwargs.get('volume_size') if volume_size is None: - raise exception.InvalidParameterValue( + raise exception.MissingParameterValue( _("No volume size provided for creating volume")) volume_id = _create_volume(seamicro_info, volume_size) @@ -493,8 +494,7 @@ class Management(base.ManagementInterface): task's node contains the required credentials information. :param task: a task from TaskManager. - :raises: InvalidParameterValue if required seamicro parameters - are missing. + :raises: MissingParameterValue when a required parameter is missing """ _parse_driver_info(task.node) @@ -523,6 +523,7 @@ class Management(base.ManagementInterface): :raises: InvalidParameterValue if an invalid boot device is specified or if required seamicro parameters are missing. :raises: IronicException on an error from seamicro-client. + :raises: MissingParameterValue when a required parameter is missing """ if device not in self.get_supported_boot_devices(): diff --git a/ironic/drivers/modules/ssh.py b/ironic/drivers/modules/ssh.py index 429f6d048..9795cc439 100644 --- a/ironic/drivers/modules/ssh.py +++ b/ironic/drivers/modules/ssh.py @@ -237,14 +237,14 @@ def _parse_driver_info(node): :param node: the Node of interest. :returns: dictionary of information. - :raises: InvalidParameterValue if any required parameters are missing - or incorrect. + :raises: InvalidParameterValue if any required parameters are incorrect. + :raises: MissingParameterValue if any required parameters are missing. """ info = node.driver_info or {} missing_info = [key for key in REQUIRED_PROPERTIES if not info.get(key)] if missing_info: - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "SSHPowerDriver requires the following to be set: %s.") % missing_info) @@ -471,6 +471,7 @@ class SSHPower(base.PowerInterface): :returns: power state. One of :class:`ironic.common.states`. :raises: InvalidParameterValue if any connection parameters are incorrect. + :raises: MissingParameterValue when a required parameter is missing :raises: NodeNotFound. :raises: SSHCommandFailed on an error from ssh. :raises: SSHConnectFailed if ssh failed to connect to the node. @@ -491,6 +492,7 @@ class SSHPower(base.PowerInterface): `ironic.common.states`. :raises: InvalidParameterValue if any connection parameters are incorrect, or if the desired power state is invalid. + :raises: MissingParameterValue when a required parameter is missing :raises: NodeNotFound. :raises: PowerStateFailure if it failed to set power state to pstate. :raises: SSHCommandFailed on an error from ssh. @@ -520,6 +522,7 @@ class SSHPower(base.PowerInterface): :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue if any connection parameters are incorrect. + :raises: MissingParameterValue when a required parameter is missing :raises: NodeNotFound. :raises: PowerStateFailure if it failed to set power state to POWER_ON. :raises: SSHCommandFailed on an error from ssh. @@ -552,7 +555,7 @@ class SSHManagement(base.ManagementInterface): :param task: a task from TaskManager. :raises: InvalidParameterValue if any connection parameters are incorrect. - + :raises: MissingParameterValue if a required parameter is missing """ _parse_driver_info(task.node) @@ -579,6 +582,7 @@ class SSHManagement(base.ManagementInterface): Default: False. Ignored by this driver. :raises: InvalidParameterValue if an invalid boot device is specified or if any connection parameters are incorrect. + :raises: MissingParameterValue if a required parameter is missing :raises: SSHConnectFailed if ssh failed to connect to the node. :raises: SSHCommandFailed on an error from ssh. :raises: NotImplementedError if the virt_type does not support @@ -610,6 +614,7 @@ class SSHManagement(base.ManagementInterface): :param task: a task from TaskManager. :raises: InvalidParameterValue if any connection parameters are incorrect. + :raises: MissingParameterValue if a required parameter is missing :raises: SSHConnectFailed if ssh failed to connect to the node. :raises: SSHCommandFailed on an error from ssh. :returns: a dictionary containing: diff --git a/ironic/drivers/utils.py b/ironic/drivers/utils.py index 47ceef275..c91045440 100644 --- a/ironic/drivers/utils.py +++ b/ironic/drivers/utils.py @@ -21,7 +21,7 @@ def _raise_unsupported_error(method=None): raise exception.UnsupportedDriverExtension(_( "Unsupported method (%s) passed through to vendor extension.") % method) - raise exception.InvalidParameterValue(_( + raise exception.MissingParameterValue(_( "Method not specified when calling vendor extension.")) @@ -64,6 +64,7 @@ class MixinVendorInterface(base.VendorInterface): :raises: UnsupportedDriverExtension if 'method' can not be mapped to the supported interfaces. :raises: InvalidParameterValue if **kwargs does not contain 'method'. + :raisee: MissingParameterValue if missing parameters in kwargs. """ route = self._map(**kwargs) @@ -76,7 +77,7 @@ class MixinVendorInterface(base.VendorInterface): :raises: UnsupportedDriverExtension if 'method' can not be mapped to the supported interfaces. - :raises: InvalidParameterValue if **kwargs does not contain 'method'. + :raises: MissingParameterValue if **kwargs does not contain 'method'. """ route = self._map(**kwargs) diff --git a/ironic/tests/conductor/test_conductor_utils.py b/ironic/tests/conductor/test_conductor_utils.py index 6db87f144..f36c3d139 100644 --- a/ironic/tests/conductor/test_conductor_utils.py +++ b/ironic/tests/conductor/test_conductor_utils.py @@ -37,9 +37,11 @@ class NodeSetBootDeviceTestCase(base.DbTestCase): def test_node_set_boot_device_non_existent_device(self): mgr_utils.mock_the_extension_manager(driver="fake_ipmitool") self.driver = driver_factory.get_driver("fake_ipmitool") + ipmi_info = utils.get_test_ipmi_info() node = obj_utils.create_test_node(self.context, uuid=cmn_utils.generate_uuid(), - driver='fake_ipmitool') + driver='fake_ipmitool', + driver_info=ipmi_info) task = task_manager.TaskManager(self.context, node.uuid) self.assertRaises(exception.InvalidParameterValue, conductor_utils.node_set_boot_device, diff --git a/ironic/tests/conductor/test_manager.py b/ironic/tests/conductor/test_manager.py index dc2a071f7..f3f6dcc82 100644 --- a/ironic/tests/conductor/test_manager.py +++ b/ironic/tests/conductor/test_manager.py @@ -519,7 +519,7 @@ class VendorPassthruTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase): # Verify reservation has been cleared. self.assertIsNone(node.reservation) - def test_vendor_passthru_invalid_method_parameters(self): + def test_vendor_passthru_missing_method_parameters(self): node = obj_utils.create_test_node(self.context, driver='fake') info = {'invalid_param': 'whatever'} self._start_service() @@ -528,7 +528,7 @@ class VendorPassthruTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase): self.service.vendor_passthru, self.context, node.uuid, 'first_method', info) # Compare true exception hidden by @messaging.expected_exceptions - self.assertEqual(exception.InvalidParameterValue, exc.exc_info[0]) + self.assertEqual(exception.MissingParameterValue, exc.exc_info[0]) node.refresh() self.assertIsNone(node.last_error) diff --git a/ironic/tests/drivers/ilo/test_common.py b/ironic/tests/drivers/ilo/test_common.py index 397279145..1f3c87aa5 100644 --- a/ironic/tests/drivers/ilo/test_common.py +++ b/ironic/tests/drivers/ilo/test_common.py @@ -59,7 +59,7 @@ class IloCommonMethodsTestCase(base.TestCase): driver='ilo', driver_info=INFO_DICT) del node.driver_info['ilo_address'] - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ilo_common.parse_driver_info, node) def test_parse_driver_info_missing_username(self): @@ -67,7 +67,7 @@ class IloCommonMethodsTestCase(base.TestCase): driver='ilo', driver_info=INFO_DICT) del node.driver_info['ilo_username'] - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ilo_common.parse_driver_info, node) def test_parse_driver_info_missing_password(self): @@ -75,7 +75,7 @@ class IloCommonMethodsTestCase(base.TestCase): driver='ilo', driver_info=INFO_DICT) del node.driver_info['ilo_password'] - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ilo_common.parse_driver_info, node) def test_parse_driver_info_invalid_timeout(self): @@ -99,13 +99,13 @@ class IloCommonMethodsTestCase(base.TestCase): driver='ilo', driver_info=INFO_DICT) del node.driver_info['ilo_password'] - node.driver_info['client_port'] = 'qwe' + del node.driver_info['ilo_address'] try: ilo_common.parse_driver_info(node) self.fail("parse_driver_info did not throw exception.") - except exception.InvalidParameterValue as e: + except exception.MissingParameterValue as e: self.assertIn('ilo_password', str(e)) - self.assertIn('client_port', str(e)) + self.assertIn('ilo_address', str(e)) @mock.patch.object(ilo_common, 'ilo_client') def test_get_ilo_object(self, ilo_client_mock): diff --git a/ironic/tests/drivers/test_ipminative.py b/ironic/tests/drivers/test_ipminative.py index 576846551..6bf476775 100644 --- a/ironic/tests/drivers/test_ipminative.py +++ b/ironic/tests/drivers/test_ipminative.py @@ -68,7 +68,7 @@ class IPMINativePrivateMethodTestCase(base.TestCase): del info['ipmi_username'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ipminative._parse_driver_info, node) @@ -312,5 +312,5 @@ class IPMINativeDriverTestCase(db_base.DbTestCase): uuid=utils.generate_uuid(), driver='fake_ipminative') with task_manager.acquire(self.context, node.uuid) as task: - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, task.driver.management.validate, task) diff --git a/ironic/tests/drivers/test_ipmitool.py b/ironic/tests/drivers/test_ipmitool.py index 9ac46ac33..b6ef7f357 100644 --- a/ironic/tests/drivers/test_ipmitool.py +++ b/ironic/tests/drivers/test_ipmitool.py @@ -134,14 +134,16 @@ class IPMIToolPrivateMethodTestCase(base.TestCase): ipmi._parse_driver_info(node) # make sure error is raised when ipmi_address is missing + info = dict(INFO_DICT) del info['ipmi_address'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ipmi._parse_driver_info, node) # test the invalid priv_level value - self.info['priv_level'] = 'ABCD' + info = dict(INFO_DICT) + info['ipmi_priv_level'] = 'ABCD' node = obj_utils.get_test_node(self.context, driver_info=info) self.assertRaises(exception.InvalidParameterValue, ipmi._parse_driver_info, @@ -915,7 +917,7 @@ class IPMIToolDriverTestCase(db_base.DbTestCase): uuid=utils.generate_uuid(), driver='fake_ipmitool') with task_manager.acquire(self.context, node.uuid) as task: - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, task.driver.management.validate, task) def test__parse_ipmi_sensor_data_ok(self): diff --git a/ironic/tests/drivers/test_pxe.py b/ironic/tests/drivers/test_pxe.py index 541a1fc60..2722ede48 100644 --- a/ironic/tests/drivers/test_pxe.py +++ b/ironic/tests/drivers/test_pxe.py @@ -78,7 +78,7 @@ class PXEValidateParametersTestCase(base.TestCase): info = dict(DRV_INFO_DICT) del info['pxe_deploy_kernel'] node = obj_utils.create_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, pxe._parse_driver_info, node) @@ -87,7 +87,7 @@ class PXEValidateParametersTestCase(base.TestCase): info = dict(DRV_INFO_DICT) del info['pxe_deploy_ramdisk'] node = obj_utils.create_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, pxe._parse_driver_info, node) @@ -115,7 +115,7 @@ class PXEValidateParametersTestCase(base.TestCase): info = dict(INST_INFO_DICT) del info['image_source'] node = obj_utils.create_test_node(self.context, instance_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, pxe._parse_instance_info, node) @@ -124,7 +124,7 @@ class PXEValidateParametersTestCase(base.TestCase): info = dict(INST_INFO_DICT) del info['root_gb'] node = obj_utils.create_test_node(self.context, instance_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, pxe._parse_instance_info, node) @@ -590,7 +590,7 @@ class PXEDriverTestCase(db_base.DbTestCase): with task_manager.acquire(self.context, self.node.uuid, shared=True) as task: task.node['instance_info'] = json.dumps(info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, task.driver.deploy.validate, task) def test_validate_fail_no_port(self): diff --git a/ironic/tests/drivers/test_seamicro.py b/ironic/tests/drivers/test_seamicro.py index 42c8f4ced..c9c973c0a 100644 --- a/ironic/tests/drivers/test_seamicro.py +++ b/ironic/tests/drivers/test_seamicro.py @@ -101,7 +101,7 @@ class SeaMicroValidateParametersTestCase(base.TestCase): info = dict(INFO_DICT) del info['seamicro_api_endpoint'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, seamicro._parse_driver_info, node) @@ -110,7 +110,7 @@ class SeaMicroValidateParametersTestCase(base.TestCase): info = dict(INFO_DICT) del info['seamicro_username'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, seamicro._parse_driver_info, node) @@ -119,7 +119,7 @@ class SeaMicroValidateParametersTestCase(base.TestCase): info = dict(INFO_DICT) del info['seamicro_password'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, seamicro._parse_driver_info, node) @@ -128,7 +128,7 @@ class SeaMicroValidateParametersTestCase(base.TestCase): info = dict(INFO_DICT) del info['seamicro_server_id'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, seamicro._parse_driver_info, node) @@ -584,5 +584,5 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase): uuid=utils.generate_uuid(), driver='fake_seamicro') with task_manager.acquire(self.context, node.uuid) as task: - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, task.driver.management.validate, task) diff --git a/ironic/tests/drivers/test_ssh.py b/ironic/tests/drivers/test_ssh.py index a9d68edef..d018cf7d8 100644 --- a/ironic/tests/drivers/test_ssh.py +++ b/ironic/tests/drivers/test_ssh.py @@ -120,7 +120,7 @@ class SSHValidateParametersTestCase(base.TestCase): info = db_utils.get_test_ssh_info() del info['ssh_address'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ssh._parse_driver_info, node) @@ -129,11 +129,11 @@ class SSHValidateParametersTestCase(base.TestCase): info = db_utils.get_test_ssh_info() del info['ssh_username'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ssh._parse_driver_info, node) - def test__parse_driver_info_missing_creds(self): + def test__parse_driver_info_invalid_creds(self): # make sure error is raised when info is missing info = db_utils.get_test_ssh_info('no-creds') node = obj_utils.get_test_node(self.context, driver_info=info) @@ -146,7 +146,7 @@ class SSHValidateParametersTestCase(base.TestCase): info = db_utils.get_test_ssh_info() del info['ssh_virt_type'] node = obj_utils.get_test_node(self.context, driver_info=info) - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, ssh._parse_driver_info, node) @@ -864,5 +864,5 @@ class SSHDriverTestCase(db_base.DbTestCase): uuid=utils.generate_uuid(), driver='fake_ssh') with task_manager.acquire(self.context, node.uuid) as task: - self.assertRaises(exception.InvalidParameterValue, + self.assertRaises(exception.MissingParameterValue, task.driver.management.validate, task) |