Improve Agent deploy driver validation
1) Check that 'image_source' is specified. 2) More informative message about missing params. Change-Id: Ia002c4df71d5e39fbd6ef9a594c4fa67c5ae2f94
This commit is contained in:
parent
d98ce6c38f
commit
9b4aab1693
|
@ -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):
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue