Пример #1
0
 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))
Пример #2
0
 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))
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
 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))
Пример #8
0
 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))
Пример #9
0
 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))
Пример #10
0
 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))
Пример #11
0
 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))
Пример #12
0
    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)
Пример #13
0
    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)
Пример #14
0
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)
Пример #15
0
    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)
Пример #16
0
    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)
Пример #17
0
    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)
Пример #18
0
    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)
Пример #19
0
    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'])
Пример #20
0
    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'))
Пример #21
0
    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"))
Пример #22
0
    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'])
Пример #23
0
    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'])
Пример #24
0
    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"])
Пример #25
0
    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'))
Пример #26
0
    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'))
Пример #27
0
    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)
Пример #28
0
    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)
Пример #29
0
    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)
Пример #30
0
    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)
Пример #31
0
    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