d454caf00a
If environment_files is specified, look in the files dict for each specified environment file and merge into the stack's environment. This is the same workflow that previously occurred client-side. Change-Id: Ibe46fd35de7988920c101a83259c06c8f8a3ed0b Implements: blueprint multi-environments
96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from heat_integrationtests.functional import functional_base
|
|
|
|
|
|
TEMPLATE = '''
|
|
heat_template_version: 2015-04-30
|
|
parameters:
|
|
p0:
|
|
type: string
|
|
default: CORRECT
|
|
p1:
|
|
type: string
|
|
default: INCORRECT
|
|
p2:
|
|
type: string
|
|
default: INCORRECT
|
|
resources:
|
|
r1:
|
|
type: test::R1
|
|
r2:
|
|
type: test::R2
|
|
r3a:
|
|
type: test::R3
|
|
r3b:
|
|
type: test::R3
|
|
'''
|
|
|
|
ENV_1 = '''
|
|
parameters:
|
|
p1: CORRECT
|
|
p2: INCORRECT-E1
|
|
resource_registry:
|
|
test::R1: OS::Heat::RandomString
|
|
test::R2: BROKEN
|
|
test::R3: OS::Heat::None
|
|
'''
|
|
|
|
ENV_2 = '''
|
|
parameters:
|
|
p2: CORRECT
|
|
resource_registry:
|
|
test::R2: OS::Heat::RandomString
|
|
resources:
|
|
r3b:
|
|
test::R3: OS::Heat::RandomString
|
|
'''
|
|
|
|
|
|
class EnvironmentMergingTests(functional_base.FunctionalTestsBase):
|
|
|
|
def test_server_environment_merging(self):
|
|
|
|
# Setup
|
|
files = {'env1.yaml': ENV_1, 'env2.yaml': ENV_2}
|
|
environment_files = ['env1.yaml', 'env2.yaml']
|
|
|
|
# Test
|
|
stack_id = self.stack_create(stack_name='env_merge',
|
|
template=TEMPLATE,
|
|
files=files,
|
|
environment_files=environment_files)
|
|
|
|
# Verify
|
|
|
|
# Since there is no environment show, the registry overriding
|
|
# is partially verified by there being no error. If it wasn't
|
|
# working, test::R2 would remain mapped to BROKEN in env1.
|
|
|
|
# Sanity check
|
|
resources = self.list_resources(stack_id)
|
|
self.assertEqual(4, len(resources))
|
|
|
|
# Verify the parameters are correctly set
|
|
stack = self.client.stacks.get(stack_id)
|
|
self.assertEqual('CORRECT', stack.parameters['p0'])
|
|
self.assertEqual('CORRECT', stack.parameters['p1'])
|
|
self.assertEqual('CORRECT', stack.parameters['p2'])
|
|
|
|
# Verify that r3b has been overridden into a RandomString
|
|
# by checking to see that it has a value
|
|
r3b = self.client.resources.get(stack_id, 'r3b')
|
|
r3b_attrs = r3b.attributes
|
|
self.assertTrue('value' in r3b_attrs)
|