8000 refactoring of removal of AWS::NoValue in reference list for CFn (#12… · localstack/localstack@958b4f1 · GitHub
[go: up one dir, main page]

8000
Skip to content

Commit 958b4f1

Browse files
authored
refactoring of removal of AWS::NoValue in reference list for CFn (#12288)
1 parent 6f32581 commit 958b4f1

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

localstack-core/localstack/services/cloudformation/engine/template_deployer.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -398,19 +398,18 @@ def _resolve_refs_recursively(
398398
join_values,
399399
)
400400

401-
join_values = [
402-
resolve_refs_recursively(
403-
account_id,
404-
region_name,
405-
stack_name,
406-
resources,
407-
mappings,
408-
conditions,
409-
parameters,
410-
v,
411-
)
412-
for v in join_values
413-
]
401+
# resolve reference in the items list
402+
assert isinstance(join_values, list)
403+
join_values = resolve_refs_recursively(
404+
account_id,
405+
region_name,
406+
stack_name,
407+
resources,
408+
mappings,
409+
conditions,
410+
parameters,
411+
join_values,
412+
)
414413

415414
none_values = [v for v in join_values if v is None]
416415
if none_values:
@@ -420,9 +419,7 @@ def _resolve_refs_recursively(
420419
raise Exception(
421420
f"Cannot resolve CF Fn::Join {value} due to null values: {join_values}"
422421
)
423-
return value[keys_list[0]][0].join(
424-
[str(v) for v in join_values if v != "__aws_no_value__"]
425-
)
422+
return value[keys_list[0]][0].join([str(v) for v in join_values])
426423

427424
if stripped_fn_lower == "sub":
428425
item_to_sub = value[keys_list[0]]
@@ -756,17 +753,22 @@ def _resolve_refs_recursively(
756753
{inner_list[0]: inner_list[1]},
757754
)
758755

759-
for i in range(len(value)):
760-
value[i] = resolve_refs_recursively(
756+
# remove _aws_no_value_ from resulting references
757+
clean_list = []
758+
for item in value:
759+
temp_value = resolve_refs_recursively(
761760
account_id,
762761
region_name,
763762
stack_name,
764763
resources,
765764
mappings,
766765
conditions,
767766
parameters,
768-
value[i],
767+
item,
769768
)
769+
if not (isinstance(temp_value, str) and temp_value == PLACEHOLDER_AWS_NO_VALUE):
770+
clean_list.append(temp_value)
771+
value = clean_list
770772

771773
return value
772774

0 commit comments

Comments
 (0)
0