summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ironic/drivers/modules/agent.py25
-rw-r--r--ironic/tests/drivers/test_agent.py17
2 files changed, 29 insertions, 13 deletions
diff --git a/ironic/drivers/modules/agent.py b/ironic/drivers/modules/agent.py
index 6a9b700a5..a40ab6e7b 100644
--- a/ironic/drivers/modules/agent.py
+++ b/ironic/drivers/modules/agent.py
@@ -171,19 +171,24 @@ class AgentDeploy(base.DeployInterface):
def validate(self, task):
"""Validate the driver-specific Node deployment info.
- This method validates whether the 'instance_info' property of the
- supplied node contains the required information for this driver to
- deploy images to the node.
+ This method validates whether the properties of the supplied node
+ contain the required information for this driver to deploy images to
+ the node.
:param task: a TaskManager instance
- :raises: InvalidParameterValue
+ :raises: MissingParameterValue
"""
- try:
- _get_tftp_image_info(task.node)
- except KeyError:
- raise exception.InvalidParameterValue(_(
- 'Node %s failed to validate deploy image info') %
- task.node.uuid)
+ node = task.node
+ params = {}
+ params['driver_info.deploy_kernel'] = node.driver_info.get(
+ 'deploy_kernel')
+ params['driver_info.deploy_ramdisk'] = node.driver_info.get(
+ 'deploy_ramdisk')
+ params['instance_info.image_source'] = node.instance_info.get(
+ 'image_source')
+ error_msg = _('Node %s failed to validate deploy image info. Some '
+ 'parameters were missing') % node.uuid
+ deploy_utils.check_for_missing_params(params, error_msg)
@task_manager.require_exclusive_lock
def deploy(self, task):
diff --git a/ironic/tests/drivers/test_agent.py b/ironic/tests/drivers/test_agent.py
index adc6d896b..f5ddde864 100644
--- a/ironic/tests/drivers/test_agent.py
+++ b/ironic/tests/drivers/test_agent.py
@@ -75,13 +75,24 @@ class TestAgentDeploy(db_base.DbTestCase):
self.context, self.node['uuid'], shared=False) as task:
self.driver.validate(task)
- def test_validate_exception(self):
+ def test_validate_driver_info_missing_params(self):
self.node.driver_info = {}
self.node.save()
with task_manager.acquire(
self.context, self.node['uuid'], shared=False) as task:
- self.assertRaises(exception.InvalidParameterValue,
- self.driver.validate, task)
+ e = self.assertRaises(exception.MissingParameterValue,
+ self.driver.validate, task)
+ self.assertIn('driver_info.deploy_ramdisk', str(e))
+ self.assertIn('driver_info.deploy_kernel', str(e))
+
+ def test_validate_instance_info_missing_params(self):
+ self.node.instance_info = {}
+ self.node.save()
+ with task_manager.acquire(
+ self.context, self.node['uuid'], shared=False) as task:
+ e = self.assertRaises(exception.MissingParameterValue,
+ self.driver.validate, task)
+ self.assertIn('instance_info.image_source', str(e))
@mock.patch.object(dhcp_factory.DHCPFactory, 'update_dhcp')
@mock.patch('ironic.conductor.utils.node_set_boot_device')