summaryrefslogtreecommitdiff
path: root/heat
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-11-27 17:07:29 +0000
committerGerrit Code Review <review@openstack.org>2014-11-27 17:07:29 +0000
commit33a2d6f20f16f4e77cf79a6dd39b8f969617ed00 (patch)
tree2cae844f91237c4b03492502fa2f00bb25ee39c5 /heat
parent7890431f386c39dff03767e1bd894fb7b25cd2fb (diff)
parentdc1b99d064d9fbb6439357e89c770f15810f7cce (diff)
downloadheat-33a2d6f20f16f4e77cf79a6dd39b8f969617ed00.tar.gz
Merge "Use environment file in template-validate" into stable/juno
Diffstat (limited to 'heat')
-rw-r--r--heat/engine/api.py4
-rw-r--r--heat/engine/parameters.py4
-rw-r--r--heat/engine/service.py2
-rw-r--r--heat/tests/test_validate.py51
4 files changed, 58 insertions, 3 deletions
diff --git a/heat/engine/api.py b/heat/engine/api.py
index 2ffad97de..1ad332acc 100644
--- a/heat/engine/api.py
+++ b/heat/engine/api.py
@@ -305,8 +305,8 @@ def format_validate_parameter(param):
api.PARAM_LABEL: param.label()
}
- if param.has_default():
- res[api.PARAM_DEFAULT] = param.default()
+ if param.has_value():
+ res[api.PARAM_DEFAULT] = param.value()
constraint_description = []
diff --git a/heat/engine/parameters.py b/heat/engine/parameters.py
index 18bdfb30a..01e2a9cc5 100644
--- a/heat/engine/parameters.py
+++ b/heat/engine/parameters.py
@@ -242,6 +242,10 @@ class Parameter(object):
raise exception.UserParameterMissing(key=self.name)
+ def has_value(self):
+ '''Parameter has a user or default value.'''
+ return self.user_value or self.has_default()
+
def hidden(self):
'''
Return whether the parameter should be sanitised in any output to
diff --git a/heat/engine/service.py b/heat/engine/service.py
index e2c75f9e7..e70579db0 100644
--- a/heat/engine/service.py
+++ b/heat/engine/service.py
@@ -802,7 +802,7 @@ class EngineService(service.Service):
return {'Error': six.text_type(ex)}
# validate parameters
- tmpl_params = tmpl.parameters(None, {})
+ tmpl_params = tmpl.parameters(None, user_params=env.params)
tmpl_params.validate(validate_value=False, context=cnxt)
is_real_param = lambda p: p.name not in tmpl_params.PSEUDO_PARAMETERS
params = tmpl_params.map(api.format_validate_parameter, is_real_param)
diff --git a/heat/tests/test_validate.py b/heat/tests/test_validate.py
index 28a33bcf8..72b19417e 100644
--- a/heat/tests/test_validate.py
+++ b/heat/tests/test_validate.py
@@ -802,6 +802,41 @@ resources:
size: { get_param: size }
'''
+test_template_default_override = '''
+heat_template_version: 2013-05-23
+
+description: create a network
+
+parameters:
+ net_name:
+ type: string
+ default: defaultnet
+ description: Name of private network to be created
+
+resources:
+ private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: { get_param: net_name }
+'''
+
+test_template_no_default = '''
+heat_template_version: 2013-05-23
+
+description: create a network
+
+parameters:
+ net_name:
+ type: string
+ description: Name of private network to be created
+
+resources:
+ private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: { get_param: net_name }
+'''
+
class validateTest(HeatTestCase):
def setUp(self):
@@ -900,6 +935,22 @@ class validateTest(HeatTestCase):
'Label': 'KeyName'}}
self.assertEqual(expected, res['Parameters'])
+ def test_validate_parameters_env_override(self):
+ t = template_format.parse(test_template_default_override)
+ env_params = {'net_name': 'betternetname'}
+ engine = service.EngineService('a', 't')
+ res = dict(engine.validate_template(None, t, env_params))
+ self.assertEqual('betternetname',
+ res['Parameters']['net_name']['Default'])
+
+ def test_validate_parameters_env_provided(self):
+ t = template_format.parse(test_template_no_default)
+ env_params = {'net_name': 'betternetname'}
+ engine = service.EngineService('a', 't')
+ res = dict(engine.validate_template(None, t, env_params))
+ self.assertEqual('betternetname',
+ res['Parameters']['net_name']['Default'])
+
def test_validate_hot_empty_parameters_valid(self):
t = template_format.parse(
"""