diff --git a/heat/api/openstack/v1/stacks.py b/heat/api/openstack/v1/stacks.py index 237f3e566a..21fdff96a8 100644 --- a/heat/api/openstack/v1/stacks.py +++ b/heat/api/openstack/v1/stacks.py @@ -137,7 +137,9 @@ class InstantiationData(object): environment global options. """ env = {} - if self.PARAM_ENVIRONMENT in self.data: + # Don't use merged environment, if environment_files are supplied. + if (self.PARAM_ENVIRONMENT in self.data and + not self.data.get(self.PARAM_ENVIRONMENT_FILES)): env_data = self.data[self.PARAM_ENVIRONMENT] with self.parse_error_check('Environment'): if isinstance(env_data, dict): diff --git a/heat/tests/api/openstack_v1/test_stacks.py b/heat/tests/api/openstack_v1/test_stacks.py index ed311b519d..9708329f8d 100644 --- a/heat/tests/api/openstack_v1/test_stacks.py +++ b/heat/tests/api/openstack_v1/test_stacks.py @@ -167,6 +167,17 @@ blarg: wibble data = stacks.InstantiationData(body) self.assertEqual(env, data.environment()) + def test_environment_with_env_files(self): + env = {'parameters': {'foo': 'bar', 'blarg': 'wibble'}} + body = {'environment': env, 'environment_files': ['env.yaml']} + expect = {'parameters': {}, + 'encrypted_param_names': [], + 'parameter_defaults': {}, + 'event_sinks': [], + 'resource_registry': {}} + data = stacks.InstantiationData(body) + self.assertEqual(expect, data.environment()) + def test_environment_and_parameters(self): body = {'parameters': {'foo': 'bar'}, 'environment': {'parameters': {'blarg': 'wibble'}}}