Provides 'if' intrinsic function
Provides condition function 'if' for templates:
AWSTemplateFormatVersion.2010-09-09
heat_template_version.2016-10-14
Change-Id: I34c342de176bc87c9cde41aa32478e386f045422
Blueprint: support-conditions-function
diff --git a/functional/test_conditions.py b/functional/test_conditions.py
index 8850c49..577a645 100644
--- a/functional/test_conditions.py
+++ b/functional/test_conditions.py
@@ -26,7 +26,7 @@
test_res:
Type: OS::Heat::TestResource
Properties:
- value: test_res
+ value: {"Fn::If": ["Prod", "env_is_prod", "env_is_test"]}
prod_res:
Type: OS::Heat::TestResource
Properties:
@@ -36,6 +36,10 @@
res_value:
Value: {"Fn::GetAtt": [prod_res, output]}
Condition: Prod
+ test_res_value:
+ Value: {"Fn::GetAtt": [test_res, output]}
+ prod_resource:
+ Value: {"Fn::If": [Prod, {Ref: prod_res}, 'no_prod_res']}
'''
hot_template = '''
@@ -52,7 +56,7 @@
test_res:
type: OS::Heat::TestResource
properties:
- value: test_res
+ value: {if: ["prod", "env_is_prod", "env_is_test"]}
prod_res:
type: OS::Heat::TestResource
properties:
@@ -62,6 +66,10 @@
res_value:
value: {get_attr: [prod_res, output]}
condition: prod
+ test_res_value:
+ value: {get_attr: [test_res, output]}
+ prod_resource:
+ value: {if: [prod, {get_resource: prod_res}, 'no_prod_res']}
'''
@@ -87,11 +95,27 @@
'res_value')['output']
self.assertEqual('prod_res', output['output_value'])
+ test_res_value = self.client.stacks.output_show(
+ stack_id, 'test_res_value')['output']
+ self.assertEqual('env_is_prod', test_res_value['output_value'])
+
+ prod_resource = self.client.stacks.output_show(
+ stack_id, 'prod_resource')['output']
+ self.assertNotEqual('no_prod_res', prod_resource['output_value'])
+
def output_assert_for_test(self, stack_id):
output = self.client.stacks.output_show(stack_id,
'res_value')['output']
self.assertIsNone(output['output_value'])
+ test_res_value = self.client.stacks.output_show(
+ stack_id, 'test_res_value')['output']
+ self.assertEqual('env_is_test', test_res_value['output_value'])
+
+ prod_resource = self.client.stacks.output_show(
+ stack_id, 'prod_resource')['output']
+ self.assertEqual('no_prod_res', prod_resource['output_value'])
+
def test_stack_create_update_cfn_template_test_to_prod(self):
stack_identifier = self.stack_create(template=cfn_template)
resources = self.client.resources.list(stack_identifier)