Add Fn::Split and Fn::Select support
This commit is contained in:
parent
856de724d0
commit
a1549b04b4
@ -162,6 +162,15 @@ def clean_json(resource_json, resources_map):
|
|||||||
if cleaned_val else '{0}'.format(val))
|
if cleaned_val else '{0}'.format(val))
|
||||||
return resource_json['Fn::Join'][0].join(join_list)
|
return resource_json['Fn::Join'][0].join(join_list)
|
||||||
|
|
||||||
|
if 'Fn::Split' in resource_json:
|
||||||
|
to_split = clean_json(resource_json['Fn::Split'][1], resources_map)
|
||||||
|
return to_split.split(resource_json['Fn::Split'][0])
|
||||||
|
|
||||||
|
if 'Fn::Select' in resource_json:
|
||||||
|
select_index = int(resource_json['Fn::Select'][0])
|
||||||
|
select_list = clean_json(resource_json['Fn::Select'][1], resources_map)
|
||||||
|
return select_list[select_index]
|
||||||
|
|
||||||
cleaned_json = {}
|
cleaned_json = {}
|
||||||
for key, value in resource_json.items():
|
for key, value in resource_json.items():
|
||||||
cleaned_val = clean_json(value, resources_map)
|
cleaned_val = clean_json(value, resources_map)
|
||||||
|
@ -72,6 +72,19 @@ get_attribute_output = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
split_select_template = {
|
||||||
|
"AWSTemplateFormatVersion": "2010-09-09",
|
||||||
|
"Resources": {
|
||||||
|
"Queue": {
|
||||||
|
"Type": "AWS::SQS::Queue",
|
||||||
|
"Properties": {
|
||||||
|
"QueueName": {"Fn::Select": [ "1", {"Fn::Split": [ "-", "123-myqueue" ] } ] },
|
||||||
|
"VisibilityTimeout": 60,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
outputs_template = dict(list(dummy_template.items()) +
|
outputs_template = dict(list(dummy_template.items()) +
|
||||||
list(output_dict.items()))
|
list(output_dict.items()))
|
||||||
bad_outputs_template = dict(
|
bad_outputs_template = dict(
|
||||||
@ -85,6 +98,7 @@ output_type_template_json = json.dumps(outputs_template)
|
|||||||
bad_output_template_json = json.dumps(bad_outputs_template)
|
bad_output_template_json = json.dumps(bad_outputs_template)
|
||||||
get_attribute_outputs_template_json = json.dumps(
|
get_attribute_outputs_template_json = json.dumps(
|
||||||
get_attribute_outputs_template)
|
get_attribute_outputs_template)
|
||||||
|
split_select_template_json = json.dumps(split_select_template)
|
||||||
|
|
||||||
|
|
||||||
def test_parse_stack_resources():
|
def test_parse_stack_resources():
|
||||||
@ -266,3 +280,17 @@ def test_reference_other_conditions():
|
|||||||
resources_map={},
|
resources_map={},
|
||||||
condition_map={"OtherCondition": True},
|
condition_map={"OtherCondition": True},
|
||||||
).should.equal(False)
|
).should.equal(False)
|
||||||
|
|
||||||
|
|
||||||
|
def test_parse_split_and_select():
|
||||||
|
stack = FakeStack(
|
||||||
|
stack_id="test_id",
|
||||||
|
name="test_stack",
|
||||||
|
template=split_select_template_json,
|
||||||
|
parameters={},
|
||||||
|
region_name='us-west-1')
|
||||||
|
|
||||||
|
stack.resource_map.should.have.length_of(1)
|
||||||
|
queue = stack.resource_map['Queue']
|
||||||
|
queue.name.should.equal("myqueue")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user