Skip to content

Commit e800dce

Browse files
committed
Extract helper for building after_parameters
1 parent 10bb97b commit e800dce

File tree

1 file changed

+22
-21
lines changed
  • localstack-core/localstack/services/cloudformation/v2

1 file changed

+22
-21
lines changed

localstack-core/localstack/services/cloudformation/v2/provider.py

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import logging
44
from collections import defaultdict
55
from datetime import UTC, datetime
6-
from typing import Any
76

87
from localstack import config
98
from localstack.aws.api import RequestContext, handler
@@ -426,17 +425,7 @@ def create_change_set(
426425
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
427426
request_parameters = request.get("Parameters", list())
428427
# TODO: handle parameter defaults and resolution
429-
after_parameters = {}
430-
for parameter in request_parameters:
431-
key = parameter["ParameterKey"]
432-
if parameter.get("UsePreviousValue", False):
433-
# todo: what if the parameter does not exist in the before parameters
434-
after_parameters[key] = before_parameters[key]
435-
continue
436-
437-
if "ParameterValue" in parameter:
438-
after_parameters[key] = parameter["ParameterValue"]
439-
continue
428+
after_parameters = self._extract_after_parameters(request_parameters, before_parameters)
440429

441430
# TODO: update this logic to always pass the clean template object if one exists. The
442431
# current issue with relaying on stack.template_original is that this appears to have
@@ -720,10 +709,7 @@ def create_stack(self, context: RequestContext, request: CreateStackInput) -> Cr
720709
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
721710
request_parameters = request.get("Parameters", list())
722711
# TODO: handle parameter defaults and resolution
723-
after_parameters: dict[str, Any] = {
724-
parameter["ParameterKey"]: parameter["ParameterValue"]
725-
for parameter in request_parameters
726-
}
712+
after_parameters = self._extract_after_parameters(request_parameters)
727713
after_template = structured_template
728714

729715
# Create internal change set to execute
@@ -1344,10 +1330,8 @@ def update_stack(
13441330
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
13451331
request_parameters = request.get("Parameters", list())
13461332
# TODO: handle parameter defaults and resolution
1347-
after_parameters: dict[str, Any] = {
1348-
parameter["ParameterKey"]: parameter["ParameterValue"]
1349-
for parameter in request_parameters
1350-
}
1333+
after_parameters = self._extract_after_parameters(request_parameters, before_parameters)
1334+
13511335
before_template = stack.template
13521336
after_template = structured_template
13531337

@@ -1405,9 +1389,26 @@ def _run(*args):
14051389

14061390
start_worker_thread(_run)
14071391

1408-
# TODO: stack id
14091392
return UpdateStackOutput(StackId=stack.stack_id)
14101393

1394+
@staticmethod
1395+
def _extract_after_parameters(
1396+
request_parameters, before_parameters: dict[str, str] | None = None
1397+
) -> dict[str, str]:
1398+
before_parameters = before_parameters or {}
1399+
after_parameters = {}
1400+
for parameter in request_parameters:
1401+
key = parameter["ParameterKey"]
1402+
if parameter.get("UsePreviousValue", False):
1403+
# todo: what if the parameter does not exist in the before parameters
1404+
after_parameters[key] = before_parameters[key]
1405+
continue
1406+
1407+
if "ParameterValue" in parameter:
1408+
after_parameters[key] = parameter["ParameterValue"]
1409+
continue
1410+
return after_parameters
1411+
14111412
@handler("DeleteStack")
14121413
def delete_stack(
14131414
self,

0 commit comments

Comments
 (0)