8000 refactoring of removal of AWS::NoValue in reference list for CFn · localstack/localstack@44100c8 · GitHub
[go: up one dir, main page]

Skip to content

Commit 44100c8

Browse files
committed
refactoring of removal of AWS::NoValue in reference list for CFn
1 parent 2d7ba1b commit 44100c8

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

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

Lines changed: 19 additions & 17 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,8 +753,10 @@ def _resolve_refs_recursively(
756753
{inner_list[0]: inner_list[1]},
757754
)
758755

756+
# remove _aws_no_value_ from resulting references
757+
clean_list = []
759758
for i in range(len(value)):
760-
value[i] = resolve_refs_recursively(
759+
temp_value = resolve_refs_recursively(
761760
account_id,
762761
region_name,
763762
stack_name,
@@ -767,6 +766,9 @@ def _resolve_refs_recursively(
767766
parameters,
768767
value[i],
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