def test_parse_driver_info_invalid_multiple_params(self): self.node.driver_info['client_timeout'] = 'qwe' try: ilo_common.parse_driver_info(self.node) self.fail("parse_driver_info did not throw exception.") except exception.InvalidParameterValue as e: self.assertIn('client_timeout', str(e))
def test_parse_driver_info_invalid_multiple_params(self): self.node.driver_info['client_timeout'] = 'qwe' try: ilo_common.parse_driver_info(self.node) self.fail("parse_driver_info did not throw exception.") except exception.InvalidParameterValue as e: self.assertIn('client_timeout', str(e))
def _validate(task): """Validate the prerequisites for virtual media based deploy. This method validates whether the 'driver_info' property of the supplied node contains the required information for this driver. :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue if any parameters are incorrect :raises: MissingParameterValue if some mandatory information is missing on the node """ node = task.node ilo_common.parse_driver_info(node) if 'ilo_deploy_iso' not in node.driver_info: raise exception.MissingParameterValue(_( "Missing 'ilo_deploy_iso' parameter in node's 'driver_info'.")) deploy_iso = node.driver_info['ilo_deploy_iso'] if not service_utils.is_glance_image(deploy_iso): try: image_service.HttpImageService().validate_href(deploy_iso) except exception.ImageRefValidationFailed: raise exception.InvalidParameterValue(_( "Virtual media deploy accepts only Glance images or " "HTTP(S) as driver_info['ilo_deploy_iso']. Either '%s' " "is not a glance UUID or not a valid HTTP(S) URL or " "the given URL is not reachable.") % deploy_iso)
def _validate(task): """Validate the prerequisites for virtual media based deploy. This method validates whether the 'driver_info' property of the supplied node contains the required information for this driver. :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue if any parameters are incorrect :raises: MissingParameterValue if some mandatory information is missing on the node """ node = task.node ilo_common.parse_driver_info(node) if 'ilo_deploy_iso' not in node.driver_info: raise exception.MissingParameterValue(_( "Missing 'ilo_deploy_iso' parameter in node's 'driver_info'.")) deploy_iso = node.driver_info['ilo_deploy_iso'] if not service_utils.is_glance_image(deploy_iso): try: image_service.HttpImageService().validate_href(deploy_iso) except exception.ImageRefValidationFailed: raise exception.InvalidParameterValue(_( "Virtual media deploy accepts only Glance images or " "HTTP(S) as driver_info['ilo_deploy_iso']. Either '%s' " "is not a glance UUID or not a valid HTTP(S) URL or " "the given URL is not reachable.") % deploy_iso)
def validate(self, task): """Check if node.driver_info contains the required iLO credentials. :param task: a TaskManager instance. :param node: Single node object. :raises: InvalidParameterValue if required iLO credentials are missing. """ ilo_common.parse_driver_info(task.node)
def validate(self, task): """Check if node.driver_info contains the required iLO credentials. :param task: a TaskManager instance. :param node: Single node object. :raises: InvalidParameterValue if required iLO credentials are missing. """ ilo_common.parse_driver_info(task.node)
def test_parse_driver_info_invalid_multiple_params(self): self.node.driver_info["client_timeout"] = "qwe" self.node.driver_info["console_port"] = "not-int" try: ilo_common.parse_driver_info(self.node) self.fail("parse_driver_info did not throw exception.") except exception.InvalidParameterValue as e: self.assertIn("client_timeout", str(e)) self.assertIn("console_port", str(e))
def test_parse_driver_info_missing_multiple_params(self): del self.node.driver_info['ilo_password'] del self.node.driver_info['ilo_address'] try: ilo_common.parse_driver_info(self.node) self.fail("parse_driver_info did not throw exception.") except exception.MissingParameterValue as e: self.assertIn('ilo_password', str(e)) self.assertIn('ilo_address', str(e))
def test_parse_driver_info_missing_multiple_params(self): del self.node.driver_info['ilo_password'] del self.node.driver_info['ilo_address'] try: ilo_common.parse_driver_info(self.node) self.fail("parse_driver_info did not throw exception.") except exception.MissingParameterValue as e: self.assertIn('ilo_password', str(e)) self.assertIn('ilo_address', str(e))
def test_parse_driver_info_missing_multiple_params(self): node = obj_utils.create_test_node(self.context, driver='ilo', driver_info=INFO_DICT) del node.driver_info['ilo_password'] node.driver_info['client_port'] = 'qwe' try: ilo_common.parse_driver_info(node) self.fail("parse_driver_info did not throw exception.") except exception.InvalidParameterValue as e: self.assertIn('ilo_password', str(e)) self.assertIn('client_port', str(e))
def test_parse_driver_info_missing_multiple_params(self): node = obj_utils.create_test_node(self.context, driver='ilo', driver_info=INFO_DICT) del node.driver_info['ilo_password'] del node.driver_info['ilo_address'] try: ilo_common.parse_driver_info(node) self.fail("parse_driver_info did not throw exception.") except exception.MissingParameterValue as e: self.assertIn('ilo_password', str(e)) self.assertIn('ilo_address', str(e))
def validate(self, task): """Check that 'driver_info' contains required ILO credentials. Validates whether the 'driver_info' property of the supplied task's node contains the required credentials information. :param task: a task from TaskManager. :raises: InvalidParameterValue if required iLO parameters are not valid. :raises: MissingParameterValue if a required parameter is missing. """ ilo_common.parse_driver_info(task.node)
def validate(self, task): """Check that 'driver_info' contains required ILO credentials. Validates whether the 'driver_info' property of the supplied task's node contains the required credentials information. :param task: a task from TaskManager. :raises: InvalidParameterValue if required iLO parameters are not valid. :raises: MissingParameterValue if a required parameter is missing. """ ilo_common.parse_driver_info(task.node)
def _validate_driver_info(task): """Validate the prerequisites for virtual media based boot. This method validates whether the 'driver_info' property of the supplied node contains the required information for this driver. :param task: a TaskManager instance containing the node to act on. :raises: InvalidParameterValue if any parameters are incorrect :raises: MissingParameterValue if some mandatory information is missing on the node """ node = task.node ilo_common.parse_driver_info(node) parse_driver_info(node)
def get_sensors_data(self, task): """Get sensors data. :param task: a TaskManager instance. :raises: FailedToGetSensorData when getting the sensor data fails. :raises: FailedToParseSensorData when parsing sensor data fails. :raises: InvalidParameterValue if required ipmi/iLO parameters are missing. :raises: MissingParameterValue if a required parameter is missing. :returns: returns a dict of sensor data group by sensor type. """ ilo_common.parse_driver_info(task.node) _update_ipmi_properties(task) super(IloManagement, self).get_sensors_data(task)
def get_sensors_data(self, task): """Get sensors data. :param task: a TaskManager instance. :raises: FailedToGetSensorData when getting the sensor data fails. :raises: FailedToParseSensorData when parsing sensor data fails. :raises: InvalidParameterValue if required ipmi/iLO parameters are missing. :raises: MissingParameterValue if a required parameter is missing. :returns: returns a dict of sensor data group by sensor type. """ ilo_common.parse_driver_info(task.node) _update_ipmi_properties(task) super(IloManagement, self).get_sensors_data(task)
def validate(self, task): """Check that 'driver_info' contains ILO and IPMI credentials. Validates whether the 'driver_info' property of the supplied task's node contains the required credentials information. :param task: a task from TaskManager. :raises: InvalidParameterValue if required IPMI/iLO parameters are missing. :raises: MissingParameterValue if a required parameter is missing. """ ilo_common.parse_driver_info(task.node) _update_ipmi_properties(task) super(IloManagement, self).validate(task)
def validate(self, task): """Check that 'driver_info' contains ILO and IPMI credentials. Validates whether the 'driver_info' property of the supplied task's node contains the required credentials information. :param task: a task from TaskManager. :raises: InvalidParameterValue if required IPMI/iLO parameters are missing. :raises: MissingParameterValue if a required parameter is missing. """ ilo_common.parse_driver_info(task.node) _update_ipmi_properties(task) super(IloManagement, self).validate(task)
def test_parse_driver_info(self): info = ilo_common.parse_driver_info(self.node) self.assertIsNotNone(info['ilo_address']) self.assertIsNotNone(info['ilo_username']) self.assertIsNotNone(info['ilo_password']) self.assertIsNotNone(info['client_timeout']) self.assertIsNotNone(info['client_port'])
def test_parse_driver_info(self): info = ilo_common.parse_driver_info(self.node) self.assertIsNotNone(info.get('ilo_address')) self.assertIsNotNone(info.get('ilo_username')) self.assertIsNotNone(info.get('ilo_password')) self.assertIsNotNone(info.get('client_timeout')) self.assertIsNotNone(info.get('client_port'))
def test_parse_driver_info(self): info = ilo_common.parse_driver_info(self.node) self.assertIsNotNone(info.get("ilo_address")) self.assertIsNotNone(info.get("ilo_username")) self.assertIsNotNone(info.get("ilo_password")) self.assertIsNotNone(info.get("client_timeout")) self.assertIsNotNone(info.get("client_port"))
def test_parse_driver_info(self): info = ilo_common.parse_driver_info(self.node) self.assertEqual(INFO_DICT['ilo_address'], info['ilo_address']) self.assertEqual(INFO_DICT['ilo_username'], info['ilo_username']) self.assertEqual(INFO_DICT['ilo_password'], info['ilo_password']) self.assertEqual(60, info['client_timeout']) self.assertEqual(443, info['client_port'])
def _test_parse_driver_info(self, isFile_mock): info = ilo_common.parse_driver_info(self.node) self.assertEqual(INFO_DICT['ilo_address'], info['ilo_address']) self.assertEqual(INFO_DICT['ilo_username'], info['ilo_username']) self.assertEqual(INFO_DICT['ilo_password'], info['ilo_password']) self.assertEqual(60, info['client_timeout']) self.assertEqual(443, info['client_port']) self.assertEqual('/home/user/cafile.pem', info['ca_file'])
def _test_parse_driver_info(self, isFile_mock): info = ilo_common.parse_driver_info(self.node) self.assertEqual(INFO_DICT["ilo_address"], info["ilo_address"]) self.assertEqual(INFO_DICT["ilo_username"], info["ilo_username"]) self.assertEqual(INFO_DICT["ilo_password"], info["ilo_password"]) self.assertEqual(60, info["client_timeout"]) self.assertEqual(443, info["client_port"]) self.assertEqual("/home/user/cafile.pem", info["ca_file"])
def test_parse_driver_info(self): node = obj_utils.create_test_node(self.context, driver='fake_ilo', driver_info=INFO_DICT) info = ilo_common.parse_driver_info(node) self.assertIsNotNone(info.get('ilo_address')) self.assertIsNotNone(info.get('ilo_username')) self.assertIsNotNone(info.get('ilo_password')) self.assertIsNotNone(info.get('client_timeout')) self.assertIsNotNone(info.get('client_port'))
def test_parse_driver_info(self): node = obj_utils.create_test_node(self.context, driver='ilo', driver_info=INFO_DICT) info = ilo_common.parse_driver_info(node) self.assertIsNotNone(info.get('ilo_address')) self.assertIsNotNone(info.get('ilo_username')) self.assertIsNotNone(info.get('ilo_password')) self.assertIsNotNone(info.get('client_timeout')) self.assertIsNotNone(info.get('client_port'))
def validate(self, task): """Validate the Node console info. :param task: a task from TaskManager. :raises: InvalidParameterValue :raises: MissingParameterValue when a required parameter is missing """ node = task.node driver_info = ilo_common.parse_driver_info(node) if "console_port" not in driver_info: raise exception.MissingParameterValue(_("Missing 'console_port' parameter in node's driver_info.")) ilo_common.update_ipmi_properties(task) super(IloConsoleInterface, self).validate(task)
def set_boot_device(self, task, device, persistent=False): """Set the boot device for the task's node. Set the boot device to use on next reboot of the node. :param task: a task from TaskManager. :param device: the boot device, one of :mod:`ironic.common.boot_devices`. :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 :raises: MissingParameterValue if required ilo credentials are missing. :raises: IloOperationError, if unable to set the boot device. """ try: boot_device = BOOT_DEVICE_MAPPING_TO_ILO[device] except KeyError: raise exception.InvalidParameterValue( _("Invalid boot device %s specified.") % device) ilo_common.parse_driver_info(task.node) ilo_common.set_boot_device(task.node, boot_device, persistent)
def set_boot_device(self, task, device, persistent=False): """Set the boot device for the task's node. Set the boot device to use on next reboot of the node. :param task: a task from TaskManager. :param device: the boot device, one of :mod:`ironic.common.boot_devices`. :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 :raises: MissingParameterValue if required ilo credentials are missing. :raises: IloOperationError, if unable to set the boot device. """ try: boot_device = BOOT_DEVICE_MAPPING_TO_ILO[device] except KeyError: raise exception.InvalidParameterValue(_( "Invalid boot device %s specified.") % device) ilo_common.parse_driver_info(task.node) ilo_common.set_boot_device(task.node, boot_device, persistent)
def validate(self, task): """Validate the Node console info. :param task: a task from TaskManager. :raises: InvalidParameterValue :raises: MissingParameterValue when a required parameter is missing """ node = task.node driver_info = ilo_common.parse_driver_info(node) if 'console_port' not in driver_info: raise exception.MissingParameterValue( _("Missing 'console_port' parameter in node's driver_info.")) ilo_common.update_ipmi_properties(task) super(IloConsoleInterface, self).validate(task)
def _parse_driver_info(self, node, mode='deploy'): """Gets the node specific deploy/rescue info. This method validates whether the 'driver_info' property of the supplied node contains the required information for this driver to deploy images to the node. :param node: a single Node. :param mode: Label indicating a deploy or rescue operation being carried out on the node. Supported values are 'deploy' and 'rescue'. Defaults to 'deploy', indicating deploy operation is being carried out. :returns: A dict with the driver_info values. :raises: MissingParameterValue, if any of the required parameters are missing. """ info = node.driver_info if mode == 'rescue': params_to_check = RESCUE_PROPERTIES_UEFI_HTTPS_BOOT.keys() else: params_to_check = REQUIRED_PROPERTIES_UEFI_HTTPS_BOOT.keys() deploy_info = {option: info.get(option) for option in params_to_check} if not any(deploy_info.values()): # NOTE(dtantsur): avoid situation when e.g. deploy_kernel comes # from driver_info but deploy_ramdisk comes from configuration, # since it's a sign of a potential operator's mistake. deploy_info = {k: getattr(CONF.conductor, k.replace('ilo_', '')) for k in params_to_check} deploy_info.update( {k: info.get(k, getattr(CONF.conductor, k.replace('ilo_', ''), None)) for k in OPTIONAL_PROPERTIES}) self._validate_hrefs(deploy_info) error_msg = (_("Error validating %s for iLO UEFI HTTPS boot. Some " "parameters were missing in node's driver_info") % mode) deploy_utils.check_for_missing_params(deploy_info, error_msg) deploy_info.update(ilo_common.parse_driver_info(node)) return deploy_info