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)
|