summaryrefslogtreecommitdiff
path: root/heat/tests
diff options
context:
space:
mode:
authorAngus Salkeld <asalkeld@mirantis.com>2014-11-24 12:38:30 +1000
committerAngus Salkeld <asalkeld@mirantis.com>2014-12-15 09:44:11 +1000
commit08431c7c0601f64e6f0477dd502bf912eba8529b (patch)
tree311f789278066da27db8b568898dc32f6153ce33 /heat/tests
parente1540f834c7b12cfad67931b2dac3eef4ed4ea54 (diff)
downloadheat-08431c7c0601f64e6f0477dd502bf912eba8529b.tar.gz
Add "parameter_defaults" to the environment
This give the user a way to set defaults recursively down nested stacks without having to create the parameter in every template (it's ignored if the template does not have the parameter). blueprint env-nested-usability Change-Id: Ie6b4481417204a527d322fd532c341b9acbce473
Diffstat (limited to 'heat/tests')
-rw-r--r--heat/tests/test_api_openstack_v1.py22
-rw-r--r--heat/tests/test_engine_service.py3
-rw-r--r--heat/tests/test_environment.py6
-rw-r--r--heat/tests/test_environment_format.py1
-rw-r--r--heat/tests/test_parameters.py20
-rw-r--r--heat/tests/test_remote_stack.py8
-rw-r--r--heat/tests/test_stack_resource.py14
7 files changed, 59 insertions, 15 deletions
diff --git a/heat/tests/test_api_openstack_v1.py b/heat/tests/test_api_openstack_v1.py
index 7fb99ea73..151339324 100644
--- a/heat/tests/test_api_openstack_v1.py
+++ b/heat/tests/test_api_openstack_v1.py
@@ -163,6 +163,7 @@ blarg: wibble
def test_parameters(self):
params = {'foo': 'bar', 'blarg': 'wibble'}
body = {'parameters': params,
+ 'parameter_defaults': {},
'resource_registry': {}}
data = stacks.InstantiationData(body)
self.assertEqual(body, data.environment())
@@ -178,6 +179,7 @@ blarg: wibble
'environment': {'parameters': {'blarg': 'wibble'}}}
expect = {'parameters': {'blarg': 'wibble',
'foo': 'bar'},
+ 'parameter_defaults': {},
'resource_registry': {}}
data = stacks.InstantiationData(body)
self.assertEqual(expect, data.environment())
@@ -192,6 +194,7 @@ blarg: wibble
expect = {'parameters': {'blarg': 'wibble',
'foo': 'bar',
'tester': 'Yes'},
+ 'parameter_defaults': {},
'resource_registry': {}}
data = stacks.InstantiationData(body)
self.assertEqual(expect, data.environment())
@@ -206,7 +209,8 @@ blarg: wibble
env = {'foo': 'bar', 'blarg': 'wibble'}
body = {'not the environment': env}
data = stacks.InstantiationData(body)
- self.assertEqual({'parameters': {}, 'resource_registry': {}},
+ self.assertEqual({'parameters': {}, 'parameter_defaults': {},
+ 'resource_registry': {}},
data.environment())
def test_args(self):
@@ -710,6 +714,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': identity.stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30},
@@ -770,6 +775,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': identity.stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30,
@@ -835,6 +841,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': identity.stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {'my.yaml': 'This is the file contents.'},
'args': {'timeout_mins': 30},
@@ -877,6 +884,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30},
@@ -892,6 +900,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30},
@@ -907,6 +916,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30},
@@ -959,6 +969,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30},
@@ -1017,6 +1028,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_name': stack_name,
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30},
@@ -1415,6 +1427,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_identity': dict(identity),
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30}})
@@ -1450,6 +1463,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_identity': dict(identity),
'template': template,
'params': {u'parameters': parameters,
+ u'parameter_defaults': {},
u'resource_registry': {}},
'files': {},
'args': {'timeout_mins': 30}})
@@ -1509,6 +1523,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_identity': dict(identity),
'template': template,
'params': {'parameters': {},
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {rpc_api.PARAM_EXISTING: True,
@@ -1544,6 +1559,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_identity': dict(identity),
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {rpc_api.PARAM_EXISTING: True,
@@ -1581,6 +1597,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_identity': dict(identity),
'template': template,
'params': {'parameters': {},
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {rpc_api.PARAM_EXISTING: True,
@@ -1620,6 +1637,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
{'stack_identity': dict(identity),
'template': template,
'params': {'parameters': parameters,
+ 'parameter_defaults': {},
'resource_registry': {}},
'files': {},
'args': {rpc_api.PARAM_EXISTING: True,
@@ -1757,6 +1775,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
('validate_template',
{'template': template,
'params': {'parameters': {},
+ 'parameter_defaults': {},
'resource_registry': {}}})
).AndReturn(engine_response)
self.m.ReplayAll()
@@ -1780,6 +1799,7 @@ class StackControllerTest(ControllerTest, common.HeatTestCase):
('validate_template',
{'template': template,
'params': {'parameters': {},
+ 'parameter_defaults': {},
'resource_registry': {}}})
).AndReturn({'Error': 'fubar'})
self.m.ReplayAll()
diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py
index 431655c36..bd9b5d9ee 100644
--- a/heat/tests/test_engine_service.py
+++ b/heat/tests/test_engine_service.py
@@ -2286,7 +2286,8 @@ class StackServiceTest(common.HeatTestCase):
self.assertEqual(expected, schema)
def _no_template_file(self, function):
- info = environment.ResourceInfo(environment.ResourceRegistry,
+ env = environment.Environment()
+ info = environment.ResourceInfo(env.registry,
['ResourceWithWrongRefOnFile'],
'not_existing.yaml')
mock_iterable = mock.MagicMock(return_value=iter([info]))
diff --git a/heat/tests/test_environment.py b/heat/tests/test_environment.py
index edd5b6d60..29037d0da 100644
--- a/heat/tests/test_environment.py
+++ b/heat/tests/test_environment.py
@@ -36,12 +36,14 @@ class EnvironmentTest(common.HeatTestCase):
def test_load_old_parameters(self):
old = {u'a': u'ff', u'b': u'ss'}
expected = {u'parameters': old,
+ u'parameter_defaults': {},
u'resource_registry': {u'resources': {}}}
env = environment.Environment(old)
self.assertEqual(expected, env.user_env_as_dict())
def test_load_new_env(self):
new_env = {u'parameters': {u'a': u'ff', u'b': u'ss'},
+ u'parameter_defaults': {u'ff': 'new_def'},
u'resource_registry': {u'OS::Food': u'fruity.yaml',
u'resources': {}}}
env = environment.Environment(new_env)
@@ -52,6 +54,7 @@ class EnvironmentTest(common.HeatTestCase):
prev_params = {'foo': 'bar', 'tester': 'Yes'}
params = {}
expected = {'parameters': prev_params,
+ 'parameter_defaults': {},
'resource_registry': {'resources': {}}}
prev_env = environment.Environment(
{'parameters': prev_params,
@@ -65,6 +68,7 @@ class EnvironmentTest(common.HeatTestCase):
prev_params = {'foo': 'bar', 'tester': 'Yes'}
params = {'tester': 'patched'}
expected = {'parameters': {'foo': 'bar', 'tester': 'patched'},
+ 'parameter_defaults': {},
'resource_registry': {'resources': {}}}
prev_env = environment.Environment(
{'parameters': prev_params,
@@ -79,6 +83,7 @@ class EnvironmentTest(common.HeatTestCase):
'another_tester': 'Yes'}
params = {'tester': 'patched'}
expected = {'parameters': {'foo': 'bar', 'tester': 'patched'},
+ 'parameter_defaults': {},
'resource_registry': {'resources': {}}}
prev_env = environment.Environment(
{'parameters': prev_params,
@@ -92,6 +97,7 @@ class EnvironmentTest(common.HeatTestCase):
prev_params = {'foo': 'bar', 'tester': 'Yes'}
params = {}
expected = {'parameters': {'foo': 'bar'},
+ 'parameter_defaults': {},
'resource_registry': {'resources': {}}}
prev_env = environment.Environment(
{'parameters': prev_params,
diff --git a/heat/tests/test_environment_format.py b/heat/tests/test_environment_format.py
index 75d975d93..25f636b61 100644
--- a/heat/tests/test_environment_format.py
+++ b/heat/tests/test_environment_format.py
@@ -24,6 +24,7 @@ class YamlEnvironmentTest(common.HeatTestCase):
yaml1 = ''
yaml2 = '''
parameters: {}
+parameter_defaults: {}
resource_registry: {}
'''
tpl1 = environment_format.parse(yaml1)
diff --git a/heat/tests/test_parameters.py b/heat/tests/test_parameters.py
index ae90dd9f7..79dbd2df7 100644
--- a/heat/tests/test_parameters.py
+++ b/heat/tests/test_parameters.py
@@ -392,13 +392,14 @@ params_schema = json.loads('''{
class ParametersTest(testtools.TestCase):
def new_parameters(self, stack_name, tmpl, user_params=None,
- stack_id=None, validate_value=True):
+ stack_id=None, validate_value=True,
+ param_defaults=None):
user_params = user_params or {}
tmpl.update({'HeatTemplateFormatVersion': '2012-12-12'})
tmpl = template.Template(tmpl)
params = tmpl.parameters(
identifier.HeatIdentifier('', stack_name, stack_id),
- user_params)
+ user_params, param_defaults=param_defaults)
params.validate(validate_value)
return params
@@ -505,6 +506,21 @@ class ParametersTest(testtools.TestCase):
'test',
params)
+ def test_use_user_default(self):
+ template = {'Parameters': {'a': {'Type': 'Number', 'Default': '42'}}}
+ params = self.new_parameters('test_params', template,
+ param_defaults={'a': '77'})
+
+ self.assertEqual(77, params['a'])
+
+ def test_dont_use_user_default(self):
+ template = {'Parameters': {'a': {'Type': 'Number', 'Default': '42'}}}
+ params = self.new_parameters('test_params', template,
+ {'a': '111'},
+ param_defaults={'a': '77'})
+
+ self.assertEqual(111, params['a'])
+
class ParameterSchemaTest(testtools.TestCase):
diff --git a/heat/tests/test_remote_stack.py b/heat/tests/test_remote_stack.py
index 892295cfa..67411c467 100644
--- a/heat/tests/test_remote_stack.py
+++ b/heat/tests/test_remote_stack.py
@@ -285,8 +285,8 @@ class RemoteStackTest(tests_common.HeatTestCase):
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
self.assertEqual('c8a19429-7fde-47ea-a42f-40045488226c',
rsrc.resource_id)
- registry = rsrc.stack.env.registry
- env = environment.get_custom_environment(registry, {'name': 'foo'})
+ env = environment.get_child_environment(rsrc.stack.env,
+ {'name': 'foo'})
args = {
'stack_name': rsrc.physical_resource_name(),
'template': template_format.parse(remote_template),
@@ -520,8 +520,8 @@ class RemoteStackTest(tests_common.HeatTestCase):
self.assertEqual((rsrc.UPDATE, rsrc.COMPLETE), rsrc.state)
self.assertEqual('bar', rsrc.properties.get('parameters')['name'])
- registry = rsrc.stack.env.registry
- env = environment.get_custom_environment(registry, {'name': 'bar'})
+ env = environment.get_child_environment(rsrc.stack.env,
+ {'name': 'bar'})
fields = {
'stack_id': rsrc.resource_id,
'template': template_format.parse(remote_template),
diff --git a/heat/tests/test_stack_resource.py b/heat/tests/test_stack_resource.py
index 2ec79c304..13423c151 100644
--- a/heat/tests/test_stack_resource.py
+++ b/heat/tests/test_stack_resource.py
@@ -210,7 +210,7 @@ class StackResourceTest(common.HeatTestCase):
self.stack = self.parent_resource.nested()
self.assertEqual({"foo": "bar"}, self.stack.t.files)
- @mock.patch('heat.engine.environment.get_custom_environment')
+ @mock.patch('heat.engine.environment.get_child_environment')
@mock.patch.object(stack_resource.parser, 'Stack')
def test_preview_with_implemented_child_resource(self, mock_stack_class,
mock_env_class):
@@ -231,14 +231,14 @@ class StackResourceTest(common.HeatTestCase):
parent_resource._validate_nested_resources = validation_mock
result = parent_resource.preview()
- mock_env_class.assert_called_once_with(self.parent_stack.env.registry,
+ mock_env_class.assert_called_once_with(self.parent_stack.env,
params)
self.assertEqual('preview_nested_stack', result)
mock_stack_class.assert_called_once_with(
mock.ANY,
'test_stack-test',
mock.ANY,
- 'environment',
+ env='environment',
timeout_mins=None,
disable_rollback=True,
parent_resource=parent_resource,
@@ -249,7 +249,7 @@ class StackResourceTest(common.HeatTestCase):
nested_depth=1
)
- @mock.patch('heat.engine.environment.get_custom_environment')
+ @mock.patch('heat.engine.environment.get_child_environment')
@mock.patch.object(stack_resource.parser, 'Stack')
def test_preview_with_implemented_dict_child_resource(self,
mock_stack_class,
@@ -271,14 +271,14 @@ class StackResourceTest(common.HeatTestCase):
parent_resource._validate_nested_resources = validation_mock
result = parent_resource.preview()
- mock_env_class.assert_called_once_with(self.parent_stack.env.registry,
+ mock_env_class.assert_called_once_with(self.parent_stack.env,
params)
self.assertEqual('preview_nested_stack', result)
mock_stack_class.assert_called_once_with(
mock.ANY,
'test_stack-test',
mock.ANY,
- 'environment',
+ env='environment',
timeout_mins=None,
disable_rollback=True,
parent_resource=parent_resource,
@@ -810,7 +810,7 @@ class StackResourceTest(common.HeatTestCase):
environment.Environment().AndReturn(env)
self.m.StubOutWithMock(parser, 'Stack')
- parser.Stack(ctx, phy_id, templ, env, timeout_mins=None,
+ parser.Stack(ctx, phy_id, templ, env=env, timeout_mins=None,
disable_rollback=True,
parent_resource=self.parent_resource,
owner_id=self.parent_stack.id,