diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-11-27 17:07:29 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-11-27 17:07:29 +0000 |
commit | 33a2d6f20f16f4e77cf79a6dd39b8f969617ed00 (patch) | |
tree | 2cae844f91237c4b03492502fa2f00bb25ee39c5 /heat | |
parent | 7890431f386c39dff03767e1bd894fb7b25cd2fb (diff) | |
parent | dc1b99d064d9fbb6439357e89c770f15810f7cce (diff) | |
download | heat-33a2d6f20f16f4e77cf79a6dd39b8f969617ed00.tar.gz |
Merge "Use environment file in template-validate" into stable/juno
Diffstat (limited to 'heat')
-rw-r--r-- | heat/engine/api.py | 4 | ||||
-rw-r--r-- | heat/engine/parameters.py | 4 | ||||
-rw-r--r-- | heat/engine/service.py | 2 | ||||
-rw-r--r-- | heat/tests/test_validate.py | 51 |
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( """ |