コード例 #1
0
ファイル: pxe.py プロジェクト: faizan-barmawer/ironic
    def validate(self, task, **kwargs):
        """Validates the inputs for a vendor passthru.

        This method checks whether the vendor passthru method is a valid one,
        and then validates whether the required information for executing the
        vendor passthru has been provided or not.

        :param task: a TaskManager instance containing the node to act on.
        :param kwargs: kwargs containins the method name and its parameters.
        :raises: InvalidParameterValue if method is invalid or any parameters
            to the method is invalid.
        """
        iscsi_deploy.get_deploy_info(task.node, **kwargs)
コード例 #2
0
ファイル: pxe.py プロジェクト: ramineni/myironic
    def validate(self, task, method, **kwargs):
        """Validates the inputs for a vendor passthru.

        This method checks whether the vendor passthru method is a valid one,
        and then validates whether the required information for executing the
        vendor passthru has been provided or not.

        :param task: a TaskManager instance containing the node to act on.
        :param method: method to be validated.
        :param kwargs: kwargs containins the method's parameters.
        :raises: InvalidParameterValue if any parameters is invalid.
        """
        driver_utils.validate_boot_option_capability(task.node)
        iscsi_deploy.get_deploy_info(task.node, **kwargs)
コード例 #3
0
ファイル: deploy.py プロジェクト: chaco-hyodo/ironic
    def validate(self, task, **kwargs):
        """Validate vendor-specific actions.

        Checks if a valid vendor passthru method was passed and validates
        the parameters for the vendor passthru method.

        :param task: a TaskManager instance containing the node to act on.
        :param kwargs: kwargs containing the vendor passthru method and its
            parameters.
        :raises: MissingParameterValue, if some required parameters were not
            passed.
        :raises: InvalidParameterValue, if any of the parameters have invalid
            value.
        """
        iscsi_deploy.get_deploy_info(task.node, **kwargs)
コード例 #4
0
ファイル: test_iscsi_deploy.py プロジェクト: Tehsmash/ironic
    def test_continue_deploy_unexpected_fail(
            self, deploy_mock, power_mock, mock_image_cache, mock_disk_layout,
            mock_collect_logs):
        kwargs = {'address': '123456', 'iqn': 'aaa-bbb'}
        deploy_mock.side_effect = KeyError('boom')
        self.node.provision_state = states.DEPLOYWAIT
        self.node.target_provision_state = states.ACTIVE
        self.node.save()

        with task_manager.acquire(self.context, self.node.uuid,
                                  shared=False) as task:
            params = iscsi_deploy.get_deploy_info(task.node, **kwargs)
            self.assertRaisesRegex(exception.InstanceDeployFailure,
                                   "Deploy failed.*Error: 'boom'",
                                   iscsi_deploy.continue_deploy,
                                   task, **kwargs)
            self.assertEqual(states.DEPLOYFAIL, task.node.provision_state)
            self.assertEqual(states.ACTIVE, task.node.target_provision_state)
            self.assertIsNotNone(task.node.last_error)
            deploy_mock.assert_called_once_with(**params)
            power_mock.assert_called_once_with(task, states.POWER_OFF)
            mock_image_cache.assert_called_once_with()
            mock_image_cache.return_value.clean_up.assert_called_once_with()
            self.assertFalse(mock_disk_layout.called)
            mock_collect_logs.assert_called_once_with(task.node)
コード例 #5
0
ファイル: test_iscsi_deploy.py プロジェクト: CiscoUcs/Ironic
 def test_get_deploy_info_boot_option_default(self):
     instance_info = self.node.instance_info
     instance_info['deploy_key'] = 'key'
     self.node.instance_info = instance_info
     kwargs = {'address': '1.1.1.1', 'iqn': 'target-iqn', 'key': 'key'}
     ret_val = iscsi_deploy.get_deploy_info(self.node, **kwargs)
     self.assertEqual('1.1.1.1', ret_val['address'])
     self.assertEqual('target-iqn', ret_val['iqn'])
     self.assertEqual('netboot', ret_val['boot_option'])
コード例 #6
0
ファイル: test_iscsi_deploy.py プロジェクト: Tehsmash/ironic
 def test_get_deploy_info_whole_disk_image(self):
     instance_info = self.node.instance_info
     instance_info['configdrive'] = 'My configdrive'
     self.node.instance_info = instance_info
     self.node.driver_internal_info['is_whole_disk_image'] = True
     kwargs = {'address': '1.1.1.1', 'iqn': 'target-iqn'}
     ret_val = iscsi_deploy.get_deploy_info(self.node, **kwargs)
     self.assertEqual('1.1.1.1', ret_val['address'])
     self.assertEqual('target-iqn', ret_val['iqn'])
     self.assertEqual('My configdrive', ret_val['configdrive'])
コード例 #7
0
ファイル: test_iscsi_deploy.py プロジェクト: CiscoUcs/Ironic
 def test_get_deploy_info_localboot(self):
     instance_info = self.node.instance_info
     instance_info['deploy_key'] = 'key'
     instance_info['capabilities'] = {'boot_option': 'local'}
     self.node.instance_info = instance_info
     kwargs = {'address': '1.1.1.1', 'iqn': 'target-iqn', 'key': 'key'}
     ret_val = iscsi_deploy.get_deploy_info(self.node, **kwargs)
     self.assertEqual('1.1.1.1', ret_val['address'])
     self.assertEqual('target-iqn', ret_val['iqn'])
     self.assertEqual('local', ret_val['boot_option'])
コード例 #8
0
ファイル: pxe.py プロジェクト: stendulker/ironic
    def validate(self, task, method, **kwargs):
        """Validates the inputs for a vendor passthru.

        If invalid, raises an exception; otherwise returns None.

        Valid methods:
        * pass_deploy_info
        * pass_bootloader_install_info

        :param task: a TaskManager instance containing the node to act on.
        :param method: method to be validated.
        :param kwargs: kwargs containins the method's parameters.
        :raises: InvalidParameterValue if any parameters is invalid.
        """
        if method == 'pass_deploy_info':
            deploy_utils.validate_capabilities(task.node)
            iscsi_deploy.get_deploy_info(task.node, **kwargs)
        elif method == 'pass_bootloader_install_info':
            iscsi_deploy.validate_pass_bootloader_info_input(task, kwargs)
コード例 #9
0
ファイル: pxe.py プロジェクト: ader1990/ironic
    def validate(self, task, **kwargs):
        """Validates the inputs for a vendor passthru.

        This method checks whether the vendor passthru method is a valid one,
        and then validates whether the required information for executing the
        vendor passthru has been provided or not.

        :param task: a TaskManager instance containing the node to act on.
        :param kwargs: kwargs containins the method name and its parameters.
        :raises: InvalidParameterValue if method is invalid or any parameters
            to the method is invalid.
        """
        method = kwargs['method']
        if method == 'pass_deploy_info':
            iscsi_deploy.get_deploy_info(task.node, **kwargs)
        else:
            raise exception.InvalidParameterValue(_(
                "Unsupported method (%s) passed to PXE driver.")
                % method)
コード例 #10
0
ファイル: deploy.py プロジェクト: maratoid/ironic
    def validate(self, task, method, **kwargs):
        """Validate vendor-specific actions.

        Checks if a valid vendor passthru method was passed and validates
        the parameters for the vendor passthru method.

        :param task: a TaskManager instance containing the node to act on.
        :param method: method to be validated.
        :param kwargs: kwargs containing the vendor passthru method's
            parameters.
        :raises: MissingParameterValue, if some required parameters were not
            passed.
        :raises: InvalidParameterValue, if any of the parameters have invalid
            value.
        """
        if method == 'pass_deploy_info':
            iscsi_deploy.get_deploy_info(task.node, **kwargs)
        elif method == 'pass_bootloader_install_info':
            iscsi_deploy.validate_pass_bootloader_info_input(task, kwargs)
コード例 #11
0
    def validate(self, task, **kwargs):
        """Checks if a valid vendor passthru method was passed and validates
        the parameters for the vendor passthru method.

        :param task: a TaskManager instance containing the node to act on.
        :param kwargs: kwargs containing the vendor passthru method and its
            parameters.
        :raises: MissingParameterValue, if some required parameters were not
            passed.
        :raises: InvalidParameterValue, if any of the parameters have invalid
            value.
        """
        method = kwargs['method']
        if method == 'pass_deploy_info':
            iscsi_deploy.get_deploy_info(task.node, **kwargs)
        else:
            raise exception.InvalidParameterValue(_(
                "Unsupported method (%s) passed to iLO driver.")
                % method)
コード例 #12
0
ファイル: test_iscsi_deploy.py プロジェクト: Tehsmash/ironic
    def _test_get_deploy_info(self, extra_instance_info=None):
        if extra_instance_info is None:
            extra_instance_info = {}

        instance_info = self.node.instance_info
        instance_info.update(extra_instance_info)
        self.node.instance_info = instance_info
        kwargs = {'address': '1.1.1.1', 'iqn': 'target-iqn'}
        ret_val = iscsi_deploy.get_deploy_info(self.node, **kwargs)
        self.assertEqual('1.1.1.1', ret_val['address'])
        self.assertEqual('target-iqn', ret_val['iqn'])
        return ret_val
コード例 #13
0
ファイル: test_iscsi_deploy.py プロジェクト: CiscoUcs/Ironic
    def test_continue_deploy_fail_empty_root_uuid(
            self, deploy_mock, power_mock, mock_image_cache):
        kwargs = {'address': '123456', 'iqn': 'aaa-bbb', 'key': 'fake-56789'}
        deploy_mock.return_value = {'root uuid': ''}
        self.node.provision_state = states.DEPLOYWAIT
        self.node.target_provision_state = states.ACTIVE
        self.node.save()

        with task_manager.acquire(self.context, self.node.uuid,
                                  shared=False) as task:
            params = iscsi_deploy.get_deploy_info(task.node, **kwargs)
            self.assertRaises(exception.InstanceDeployFailure,
                              iscsi_deploy.continue_deploy,
                              task, **kwargs)
            self.assertEqual(states.DEPLOYFAIL, task.node.provision_state)
            self.assertEqual(states.ACTIVE, task.node.target_provision_state)
            self.assertIsNotNone(task.node.last_error)
            deploy_mock.assert_called_once_with(**params)
            power_mock.assert_called_once_with(task, states.POWER_OFF)
            mock_image_cache.assert_called_once_with()
            mock_image_cache.return_value.clean_up.assert_called_once_with()
コード例 #14
0
ファイル: test_iscsi_deploy.py プロジェクト: Codixis/ironic
    def test_continue_deploy_fail_no_root_uuid_or_disk_id(
            self, deploy_mock, power_mock, mock_image_cache, mock_disk_layout):
        kwargs = {'address': '123456', 'iqn': 'aaa-bbb', 'key': 'fake-56789'}
        deploy_mock.return_value = {}
        self.node.provision_state = states.DEPLOYWAIT
        self.node.target_provision_state = states.ACTIVE
        self.node.save()

        with task_manager.acquire(self.context, self.node.uuid,
                                  shared=False) as task:
            params = iscsi_deploy.get_deploy_info(task.node, **kwargs)
            self.assertRaises(exception.InstanceDeployFailure,
                              iscsi_deploy.continue_deploy, task, **kwargs)
            self.assertEqual(states.DEPLOYFAIL, task.node.provision_state)
            self.assertEqual(states.ACTIVE, task.node.target_provision_state)
            self.assertIsNotNone(task.node.last_error)
            deploy_mock.assert_called_once_with(**params)
            power_mock.assert_called_once_with(task, states.POWER_OFF)
            mock_image_cache.assert_called_once_with()
            mock_image_cache.return_value.clean_up.assert_called_once_with()
            self.assertFalse(mock_disk_layout.called)