Skip to content

Commit ebf3c17

Browse files
committed
Skip resources conditionally evaluating to False
1 parent 5a45aa0 commit ebf3c17

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

localstack-core/localstack/services/cloudformation/engine/v2/change_set_model_preproc.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
NodeProperties,
3131
NodeProperty,
3232
NodeResource,
33+
NodeResources,
3334
NodeTemplate,
3435
Nothing,
3536
NothingType,
@@ -1170,6 +1171,20 @@ def _resolve_resource_condition_reference(self, reference: TerminalValue) -> Pre
11701171
after = after_delta.after
11711172
return PreprocEntityDelta(before=before, after=after)
11721173

1174+
def visit_node_resources(self, node_resources: NodeResources):
1175+
"""
1176+
Skip resources where they conditionally evaluate to False
1177+
"""
1178+
for node_resource in node_resources.resources:
1179+
if not is_nothing(node_resource.condition_reference):
1180+
condition_delta = self._resolve_resource_condition_reference(
1181+
node_resource.condition_reference
1182+
)
1183+
condition_after = condition_delta.after
1184+
if condition_after is False:
1185+
continue
1186+
self.visit(node_resource)
1187+
11731188
def visit_node_resource(
11741189
self, node_resource: NodeResource
11751190
) -> PreprocEntityDelta[PreprocResource, PreprocResource]:
@@ -1280,6 +1295,14 @@ def visit_node_outputs(
12801295
before: list[PreprocOutput] = []
12811296
after: list[PreprocOutput] = []
12821297
for node_output in node_outputs.outputs:
1298+
if not is_nothing(node_output.condition_reference):
1299+
condition_delta = self._resolve_resource_condition_reference(
1300+
node_output.condition_reference
1301+
)
1302+
condition_after = condition_delta.after
1303+
if condition_after is False:
1304+
continue
1305+
12831306
output_delta: PreprocEntityDelta[PreprocOutput, PreprocOutput] = self.visit(node_output)
12841307
output_before = output_delta.before
12851308
output_after = output_delta.after

0 commit comments

Comments
 (0)