localstack-core 4.7.1.dev33__py3-none-any.whl → 4.7.1.dev34__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of localstack-core might be problematic. Click here for more details.
- localstack/services/cloudformation/engine/v2/change_set_model.py +66 -13
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +13 -12
- localstack/services/cloudformation/v2/entities.py +5 -65
- localstack/services/cloudformation/v2/provider.py +105 -81
- localstack/services/cloudformation/v2/types.py +32 -0
- localstack/version.py +2 -2
- {localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/METADATA +1 -1
- {localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/RECORD +16 -15
- localstack_core-4.7.1.dev34.dist-info/plux.json +1 -0
- localstack_core-4.7.1.dev33.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev33.data → localstack_core-4.7.1.dev34.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev33.data → localstack_core-4.7.1.dev34.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev33.data → localstack_core-4.7.1.dev34.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/top_level.txt +0 -0
|
@@ -4,17 +4,18 @@ import abc
|
|
|
4
4
|
import enum
|
|
5
5
|
from collections.abc import Generator
|
|
6
6
|
from itertools import zip_longest
|
|
7
|
-
from typing import
|
|
7
|
+
from typing import Any, Final, TypedDict, cast
|
|
8
8
|
|
|
9
9
|
from typing_extensions import TypeVar
|
|
10
10
|
|
|
11
11
|
from localstack.aws.api.cloudformation import ChangeAction
|
|
12
12
|
from localstack.services.cloudformation.resource_provider import ResourceProviderExecutor
|
|
13
|
+
from localstack.services.cloudformation.v2.types import (
|
|
14
|
+
EngineParameter,
|
|
15
|
+
engine_parameter_value,
|
|
16
|
+
)
|
|
13
17
|
from localstack.utils.strings import camel_to_snake_case
|
|
14
18
|
|
|
15
|
-
if TYPE_CHECKING:
|
|
16
|
-
from localstack.services.cloudformation.v2.entities import EngineParameter
|
|
17
|
-
|
|
18
19
|
T = TypeVar("T")
|
|
19
20
|
|
|
20
21
|
|
|
@@ -356,6 +357,8 @@ class NodeResource(ChangeSetNode):
|
|
|
356
357
|
condition_reference: Final[Maybe[TerminalValue]]
|
|
357
358
|
depends_on: Final[Maybe[NodeDependsOn]]
|
|
358
359
|
requires_replacement: Final[bool]
|
|
360
|
+
deletion_policy: Final[Maybe[ChangeSetTerminal]]
|
|
361
|
+
update_replace_policy: Final[Maybe[ChangeSetTerminal]]
|
|
359
362
|
|
|
360
363
|
def __init__(
|
|
361
364
|
self,
|
|
@@ -367,6 +370,8 @@ class NodeResource(ChangeSetNode):
|
|
|
367
370
|
condition_reference: Maybe[TerminalValue],
|
|
368
371
|
depends_on: Maybe[NodeDependsOn],
|
|
369
372
|
requires_replacement: bool,
|
|
373
|
+
deletion_policy: Maybe[ChangeSetTerminal],
|
|
374
|
+
update_replace_policy: Maybe[ChangeSetTerminal],
|
|
370
375
|
):
|
|
371
376
|
super().__init__(scope=scope, change_type=change_type)
|
|
372
377
|
self.name = name
|
|
@@ -375,6 +380,8 @@ class NodeResource(ChangeSetNode):
|
|
|
375
380
|
self.condition_reference = condition_reference
|
|
376
381
|
self.depends_on = depends_on
|
|
377
382
|
self.requires_replacement = requires_replacement
|
|
383
|
+
self.deletion_policy = deletion_policy
|
|
384
|
+
self.update_replace_policy = update_replace_policy
|
|
378
385
|
|
|
379
386
|
|
|
380
387
|
class NodeProperties(ChangeSetNode):
|
|
@@ -481,6 +488,8 @@ ValueKey: Final[str] = "Value"
|
|
|
481
488
|
ExportKey: Final[str] = "Export"
|
|
482
489
|
OutputsKey: Final[str] = "Outputs"
|
|
483
490
|
DependsOnKey: Final[str] = "DependsOn"
|
|
491
|
+
DeletionPolicyKey: Final[str] = "DeletionPolicy"
|
|
492
|
+
UpdateReplacePolicyKey: Final[str] = "UpdateReplacePolicy"
|
|
484
493
|
# TODO: expand intrinsic functions set.
|
|
485
494
|
RefKey: Final[str] = "Ref"
|
|
486
495
|
RefConditionKey: Final[str] = "Condition"
|
|
@@ -902,6 +911,30 @@ class ChangeSetModel:
|
|
|
902
911
|
raise RuntimeError()
|
|
903
912
|
return value
|
|
904
913
|
|
|
914
|
+
def _visit_deletion_policy(
|
|
915
|
+
self, scope: Scope, before_deletion_policy: Any, after_deletion_policy: Any
|
|
916
|
+
) -> TerminalValue:
|
|
917
|
+
value = self._visit_value(
|
|
918
|
+
scope=scope, before_value=before_deletion_policy, after_value=after_deletion_policy
|
|
919
|
+
)
|
|
920
|
+
if not isinstance(value, TerminalValue):
|
|
921
|
+
# TODO: decide where template schema validation should occur.
|
|
922
|
+
raise RuntimeError()
|
|
923
|
+
return value
|
|
924
|
+
|
|
925
|
+
def _visit_update_replace_policy(
|
|
926
|
+
self, scope: Scope, before_update_replace_policy: Any, after_deletion_policy: Any
|
|
927
|
+
) -> TerminalValue:
|
|
928
|
+
value = self._visit_value(
|
|
929
|
+
scope=scope,
|
|
930
|
+
before_value=before_update_replace_policy,
|
|
931
|
+
after_value=after_deletion_policy,
|
|
932
|
+
)
|
|
933
|
+
if not isinstance(value, TerminalValue):
|
|
934
|
+
# TODO: decide where template schema validation should occur.
|
|
935
|
+
raise RuntimeError()
|
|
936
|
+
return value
|
|
937
|
+
|
|
905
938
|
def _visit_resource(
|
|
906
939
|
self,
|
|
907
940
|
scope: Scope,
|
|
@@ -947,8 +980,30 @@ class ChangeSetModel:
|
|
|
947
980
|
after_properties=after_properties,
|
|
948
981
|
)
|
|
949
982
|
|
|
983
|
+
deletion_policy = Nothing
|
|
984
|
+
scope_deletion_policy, (before_deletion_policy, after_deletion_policy) = (
|
|
985
|
+
self._safe_access_in(scope, DeletionPolicyKey, before_resource, after_resource)
|
|
986
|
+
)
|
|
987
|
+
if before_deletion_policy or after_deletion_policy:
|
|
988
|
+
deletion_policy = self._visit_deletion_policy(
|
|
989
|
+
scope_deletion_policy, before_deletion_policy, after_deletion_policy
|
|
990
|
+
)
|
|
991
|
+
|
|
992
|
+
update_replace_policy = Nothing
|
|
993
|
+
scope_update_replace_policy, (before_update_replace_policy, after_update_replace_policy) = (
|
|
994
|
+
self._safe_access_in(scope, UpdateReplacePolicyKey, before_resource, after_resource)
|
|
995
|
+
)
|
|
996
|
+
if before_update_replace_policy or after_update_replace_policy:
|
|
997
|
+
update_replace_policy = self._visit_update_replace_policy(
|
|
998
|
+
scope_update_replace_policy,
|
|
999
|
+
before_update_replace_policy,
|
|
1000
|
+
after_update_replace_policy,
|
|
1001
|
+
)
|
|
1002
|
+
|
|
950
1003
|
change_type = change_type_of(
|
|
951
|
-
before_resource,
|
|
1004
|
+
before_resource,
|
|
1005
|
+
after_resource,
|
|
1006
|
+
[properties, condition_reference, depends_on, deletion_policy, update_replace_policy],
|
|
952
1007
|
)
|
|
953
1008
|
requires_replacement = self._resolve_requires_replacement(
|
|
954
1009
|
node_properties=properties, resource_type=terminal_value_type
|
|
@@ -962,6 +1017,8 @@ class ChangeSetModel:
|
|
|
962
1017
|
condition_reference=condition_reference,
|
|
963
1018
|
depends_on=depends_on,
|
|
964
1019
|
requires_replacement=requires_replacement,
|
|
1020
|
+
deletion_policy=deletion_policy,
|
|
1021
|
+
update_replace_policy=update_replace_policy,
|
|
965
1022
|
)
|
|
966
1023
|
self._visited_scopes[scope] = node_resource
|
|
967
1024
|
return node_resource
|
|
@@ -1019,18 +1076,14 @@ class ChangeSetModel:
|
|
|
1019
1076
|
|
|
1020
1077
|
before_parameter = Nothing
|
|
1021
1078
|
if not is_nothing(before_parameter_dct):
|
|
1022
|
-
before_parameter = (
|
|
1023
|
-
before_parameter_dct
|
|
1024
|
-
or before_parameter_dct["given_value"]
|
|
1025
|
-
or before_parameter_dct.get("default_value")
|
|
1079
|
+
before_parameter = before_parameter_dct.get("resolved_value") or engine_parameter_value(
|
|
1080
|
+
before_parameter_dct
|
|
1026
1081
|
)
|
|
1027
1082
|
|
|
1028
1083
|
after_parameter = Nothing
|
|
1029
1084
|
if not is_nothing(after_parameter_dct):
|
|
1030
|
-
after_parameter = (
|
|
1031
|
-
after_parameter_dct
|
|
1032
|
-
or after_parameter_dct["given_value"]
|
|
1033
|
-
or after_parameter_dct.get("default_value")
|
|
1085
|
+
after_parameter = after_parameter_dct.get("resolved_value") or engine_parameter_value(
|
|
1086
|
+
after_parameter_dct
|
|
1034
1087
|
)
|
|
1035
1088
|
|
|
1036
1089
|
parameter = self._visit_value(
|
|
@@ -8,6 +8,7 @@ from typing import Final, Protocol
|
|
|
8
8
|
from localstack import config
|
|
9
9
|
from localstack.aws.api.cloudformation import (
|
|
10
10
|
ChangeAction,
|
|
11
|
+
Output,
|
|
11
12
|
ResourceStatus,
|
|
12
13
|
StackStatus,
|
|
13
14
|
)
|
|
@@ -50,8 +51,7 @@ EventOperationFromAction = {"Add": "CREATE", "Modify": "UPDATE", "Remove": "DELE
|
|
|
50
51
|
@dataclass
|
|
51
52
|
class ChangeSetModelExecutorResult:
|
|
52
53
|
resources: dict[str, ResolvedResource]
|
|
53
|
-
outputs:
|
|
54
|
-
exports: dict
|
|
54
|
+
outputs: list[Output]
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
class DeferredAction(Protocol):
|
|
@@ -61,15 +61,13 @@ class DeferredAction(Protocol):
|
|
|
61
61
|
class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
62
62
|
# TODO: add typing for resolved resources and parameters.
|
|
63
63
|
resources: Final[dict[str, ResolvedResource]]
|
|
64
|
-
outputs: Final[
|
|
65
|
-
exports: Final[dict]
|
|
64
|
+
outputs: Final[list[Output]]
|
|
66
65
|
_deferred_actions: list[DeferredAction]
|
|
67
66
|
|
|
68
67
|
def __init__(self, change_set: ChangeSet):
|
|
69
68
|
super().__init__(change_set=change_set)
|
|
70
69
|
self.resources = dict()
|
|
71
|
-
self.outputs =
|
|
72
|
-
self.exports = dict()
|
|
70
|
+
self.outputs = []
|
|
73
71
|
self._deferred_actions = list()
|
|
74
72
|
self.resource_provider_executor = ResourceProviderExecutor(
|
|
75
73
|
stack_name=change_set.stack.stack_name,
|
|
@@ -92,7 +90,6 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
92
90
|
return ChangeSetModelExecutorResult(
|
|
93
91
|
resources=self.resources,
|
|
94
92
|
outputs=self.outputs,
|
|
95
|
-
exports=self.exports,
|
|
96
93
|
)
|
|
97
94
|
|
|
98
95
|
def _defer_action(self, action: DeferredAction):
|
|
@@ -228,11 +225,15 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
228
225
|
if is_nothing(after) or (isinstance(after, PreprocOutput) and after.condition is False):
|
|
229
226
|
return delta
|
|
230
227
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
228
|
+
output = Output(
|
|
229
|
+
OutputKey=delta.after.name,
|
|
230
|
+
OutputValue=delta.after.value,
|
|
231
|
+
# TODO
|
|
232
|
+
# Description=delta.after.description
|
|
233
|
+
)
|
|
234
|
+
if after.export:
|
|
235
|
+
output["ExportName"] = after.export["Name"]
|
|
236
|
+
self.outputs.append(output)
|
|
236
237
|
return delta
|
|
237
238
|
|
|
238
239
|
def _execute_resource_change(
|
|
@@ -9,10 +9,7 @@ from localstack.aws.api.cloudformation import (
|
|
|
9
9
|
CreateStackInput,
|
|
10
10
|
CreateStackSetInput,
|
|
11
11
|
ExecutionStatus,
|
|
12
|
-
Output,
|
|
13
12
|
ResourceStatus,
|
|
14
|
-
StackDriftInformation,
|
|
15
|
-
StackDriftStatus,
|
|
16
13
|
StackEvent,
|
|
17
14
|
StackInstanceComprehensiveStatus,
|
|
18
15
|
StackInstanceDetailedStatus,
|
|
@@ -25,9 +22,6 @@ from localstack.aws.api.cloudformation import (
|
|
|
25
22
|
from localstack.aws.api.cloudformation import (
|
|
26
23
|
Parameter as ApiParameter,
|
|
27
24
|
)
|
|
28
|
-
from localstack.aws.api.cloudformation import (
|
|
29
|
-
Stack as ApiStack,
|
|
30
|
-
)
|
|
31
25
|
from localstack.services.cloudformation.engine.entities import (
|
|
32
26
|
StackIdentifier,
|
|
33
27
|
)
|
|
@@ -35,33 +29,14 @@ from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
|
35
29
|
ChangeType,
|
|
36
30
|
UpdateModel,
|
|
37
31
|
)
|
|
32
|
+
from localstack.services.cloudformation.v2.types import ResolvedResource
|
|
38
33
|
from localstack.utils.aws import arns
|
|
39
34
|
from localstack.utils.strings import long_uid, short_uid
|
|
40
35
|
|
|
41
36
|
|
|
42
|
-
# TODO: turn into class/dataclass
|
|
43
|
-
class EngineParameter(TypedDict):
|
|
44
|
-
"""
|
|
45
|
-
Parameters supplied by the user. The resolved value field is populated by the engine
|
|
46
|
-
"""
|
|
47
|
-
|
|
48
|
-
type_: str
|
|
49
|
-
given_value: NotRequired[str | None]
|
|
50
|
-
resolved_value: NotRequired[str | None]
|
|
51
|
-
default_value: NotRequired[str | None]
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
class ResolvedResource(TypedDict):
|
|
55
|
-
LogicalResourceId: str
|
|
56
|
-
Type: str
|
|
57
|
-
Properties: dict
|
|
58
|
-
ResourceStatus: ResourceStatus
|
|
59
|
-
PhysicalResourceId: str | None
|
|
60
|
-
LastUpdatedTimestamp: datetime | None
|
|
61
|
-
|
|
62
|
-
|
|
63
37
|
class Stack:
|
|
64
38
|
stack_name: str
|
|
39
|
+
description: str | None
|
|
65
40
|
parameters: list[ApiParameter]
|
|
66
41
|
change_set_id: str | None
|
|
67
42
|
status: StackStatus
|
|
@@ -123,6 +98,7 @@ class Stack:
|
|
|
123
98
|
self.resource_states = {}
|
|
124
99
|
self.events = []
|
|
125
100
|
self.resolved_exports = {}
|
|
101
|
+
self.description = None
|
|
126
102
|
|
|
127
103
|
def set_stack_status(self, status: StackStatus, reason: StackStatusReason | None = None):
|
|
128
104
|
self.status = status
|
|
@@ -197,44 +173,6 @@ class Stack:
|
|
|
197
173
|
|
|
198
174
|
self.events.insert(0, event)
|
|
199
175
|
|
|
200
|
-
def describe_details(self) -> ApiStack:
|
|
201
|
-
result = {
|
|
202
|
-
"CreationTime": self.creation_time,
|
|
203
|
-
"DeletionTime": self.deletion_time,
|
|
204
|
-
"StackId": self.stack_id,
|
|
205
|
-
"StackName": self.stack_name,
|
|
206
|
-
"StackStatus": self.status,
|
|
207
|
-
"StackStatusReason": self.status_reason,
|
|
208
|
-
# fake values
|
|
209
|
-
"DisableRollback": False,
|
|
210
|
-
"DriftInformation": StackDriftInformation(
|
|
211
|
-
StackDriftStatus=StackDriftStatus.NOT_CHECKED
|
|
212
|
-
),
|
|
213
|
-
"EnableTerminationProtection": self.enable_termination_protection,
|
|
214
|
-
"LastUpdatedTime": self.creation_time,
|
|
215
|
-
"RollbackConfiguration": {},
|
|
216
|
-
"Tags": [],
|
|
217
|
-
"NotificationARNs": [],
|
|
218
|
-
"Capabilities": self.capabilities,
|
|
219
|
-
}
|
|
220
|
-
# TODO: confirm the logic for this
|
|
221
|
-
if change_set_id := self.change_set_id:
|
|
222
|
-
result["ChangeSetId"] = change_set_id
|
|
223
|
-
|
|
224
|
-
if self.resolved_outputs:
|
|
225
|
-
describe_outputs = []
|
|
226
|
-
for key, value in self.resolved_outputs.items():
|
|
227
|
-
describe_outputs.append(
|
|
228
|
-
Output(
|
|
229
|
-
# TODO(parity): Description, ExportName
|
|
230
|
-
# TODO(parity): what happens on describe stack when the stack has not been deployed yet?
|
|
231
|
-
OutputKey=key,
|
|
232
|
-
OutputValue=value,
|
|
233
|
-
)
|
|
234
|
-
)
|
|
235
|
-
result["Outputs"] = describe_outputs
|
|
236
|
-
return result
|
|
237
|
-
|
|
238
176
|
def is_active(self) -> bool:
|
|
239
177
|
return self.status != StackStatus.DELETE_COMPLETE
|
|
240
178
|
|
|
@@ -255,6 +193,7 @@ class ChangeSet:
|
|
|
255
193
|
creation_time: datetime
|
|
256
194
|
processed_template: dict | None
|
|
257
195
|
resolved_parameters: list[ApiParameter]
|
|
196
|
+
description: str | None
|
|
258
197
|
|
|
259
198
|
def __init__(
|
|
260
199
|
self,
|
|
@@ -275,6 +214,7 @@ class ChangeSet:
|
|
|
275
214
|
|
|
276
215
|
self.change_set_name = request_payload["ChangeSetName"]
|
|
277
216
|
self.change_set_type = request_payload.get("ChangeSetType", ChangeSetType.UPDATE)
|
|
217
|
+
self.description = request_payload.get("Description")
|
|
278
218
|
self.change_set_id = arns.cloudformation_change_set_arn(
|
|
279
219
|
self.change_set_name,
|
|
280
220
|
change_set_id=short_uid(),
|
|
@@ -3,7 +3,6 @@ import json
|
|
|
3
3
|
import logging
|
|
4
4
|
from collections import defaultdict
|
|
5
5
|
from datetime import UTC, datetime
|
|
6
|
-
from typing import Any
|
|
7
6
|
|
|
8
7
|
from localstack import config
|
|
9
8
|
from localstack.aws.api import RequestContext, handler
|
|
@@ -50,7 +49,6 @@ from localstack.aws.api.cloudformation import (
|
|
|
50
49
|
ListStacksOutput,
|
|
51
50
|
LogicalResourceId,
|
|
52
51
|
NextToken,
|
|
53
|
-
Output,
|
|
54
52
|
Parameter,
|
|
55
53
|
PhysicalResourceId,
|
|
56
54
|
RetainExceptOnCreate,
|
|
@@ -112,11 +110,11 @@ from localstack.services.cloudformation.stores import (
|
|
|
112
110
|
)
|
|
113
111
|
from localstack.services.cloudformation.v2.entities import (
|
|
114
112
|
ChangeSet,
|
|
115
|
-
EngineParameter,
|
|
116
113
|
Stack,
|
|
117
114
|
StackInstance,
|
|
118
115
|
StackSet,
|
|
119
116
|
)
|
|
117
|
+
from localstack.services.cloudformation.v2.types import EngineParameter
|
|
120
118
|
from localstack.utils.collections import select_attributes
|
|
121
119
|
from localstack.utils.strings import short_uid
|
|
122
120
|
from localstack.utils.threads import start_worker_thread
|
|
@@ -427,17 +425,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
427
425
|
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
|
|
428
426
|
request_parameters = request.get("Parameters", list())
|
|
429
427
|
# TODO: handle parameter defaults and resolution
|
|
430
|
-
after_parameters =
|
|
431
|
-
for parameter in request_parameters:
|
|
432
|
-
key = parameter["ParameterKey"]
|
|
433
|
-
if parameter.get("UsePreviousValue", False):
|
|
434
|
-
# todo: what if the parameter does not exist in the before parameters
|
|
435
|
-
after_parameters[key] = before_parameters[key]
|
|
436
|
-
continue
|
|
437
|
-
|
|
438
|
-
if "ParameterValue" in parameter:
|
|
439
|
-
after_parameters[key] = parameter["ParameterValue"]
|
|
440
|
-
continue
|
|
428
|
+
after_parameters = self._extract_after_parameters(request_parameters, before_parameters)
|
|
441
429
|
|
|
442
430
|
# TODO: update this logic to always pass the clean template object if one exists. The
|
|
443
431
|
# current issue with relaying on stack.template_original is that this appears to have
|
|
@@ -480,7 +468,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
480
468
|
|
|
481
469
|
change_set.set_change_set_status(ChangeSetStatus.CREATE_COMPLETE)
|
|
482
470
|
|
|
483
|
-
stack.change_set_id = change_set.change_set_id
|
|
484
471
|
stack.change_set_ids.append(change_set.change_set_id)
|
|
485
472
|
state.change_sets[change_set.change_set_id] = change_set
|
|
486
473
|
|
|
@@ -539,11 +526,19 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
539
526
|
change_set.stack.resolved_resources = result.resources
|
|
540
527
|
change_set.stack.resolved_parameters = change_set.resolved_parameters
|
|
541
528
|
change_set.stack.resolved_outputs = result.outputs
|
|
542
|
-
|
|
529
|
+
|
|
530
|
+
change_set.stack.resolved_exports = {}
|
|
531
|
+
for output in result.outputs:
|
|
532
|
+
if export_name := output.get("ExportName"):
|
|
533
|
+
change_set.stack.resolved_exports[export_name] = output["OutputValue"]
|
|
534
|
+
|
|
535
|
+
change_set.stack.change_set_id = change_set.change_set_id
|
|
536
|
+
change_set.stack.change_set_ids.append(change_set.change_set_id)
|
|
543
537
|
|
|
544
538
|
# if the deployment succeeded, update the stack's template representation to that
|
|
545
539
|
# which was just deployed
|
|
546
540
|
change_set.stack.template = change_set.template
|
|
541
|
+
change_set.stack.description = change_set.template.get("Description")
|
|
547
542
|
change_set.stack.processed_template = change_set.processed_template
|
|
548
543
|
change_set.stack.template_body = change_set.template_body
|
|
549
544
|
except Exception as e:
|
|
@@ -558,6 +553,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
558
553
|
|
|
559
554
|
change_set.stack.set_stack_status(new_stack_status)
|
|
560
555
|
change_set.set_execution_status(ExecutionStatus.EXECUTE_FAILED)
|
|
556
|
+
change_set.stack.change_set_id = change_set.change_set_id
|
|
557
|
+
change_set.stack.change_set_ids.append(change_set.change_set_id)
|
|
561
558
|
|
|
562
559
|
start_worker_thread(_run)
|
|
563
560
|
|
|
@@ -587,15 +584,20 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
587
584
|
StackId=change_set.stack.stack_id,
|
|
588
585
|
StackName=change_set.stack.stack_name,
|
|
589
586
|
CreationTime=change_set.creation_time,
|
|
590
|
-
Parameters=[
|
|
591
|
-
# TODO: add masking support.
|
|
592
|
-
Parameter(ParameterKey=key, ParameterValue=value)
|
|
593
|
-
for (key, value) in change_set.resolved_parameters.items()
|
|
594
|
-
],
|
|
595
587
|
Changes=changes,
|
|
596
588
|
Capabilities=change_set.stack.capabilities,
|
|
597
589
|
StatusReason=change_set.status_reason,
|
|
590
|
+
Description=change_set.description,
|
|
591
|
+
# TODO: static information
|
|
592
|
+
IncludeNestedStacks=False,
|
|
593
|
+
NotificationARNs=[],
|
|
598
594
|
)
|
|
595
|
+
if change_set.resolved_parameters:
|
|
596
|
+
result["Parameters"] = [
|
|
597
|
+
# TODO: add masking support.
|
|
598
|
+
Parameter(ParameterKey=key, ParameterValue=value)
|
|
599
|
+
for (key, value) in change_set.resolved_parameters.items()
|
|
600
|
+
]
|
|
599
601
|
return result
|
|
600
602
|
|
|
601
603
|
@handler("DescribeChangeSet")
|
|
@@ -707,10 +709,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
707
709
|
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
|
|
708
710
|
request_parameters = request.get("Parameters", list())
|
|
709
711
|
# TODO: handle parameter defaults and resolution
|
|
710
|
-
after_parameters
|
|
711
|
-
parameter["ParameterKey"]: parameter["ParameterValue"]
|
|
712
|
-
for parameter in request_parameters
|
|
713
|
-
}
|
|
712
|
+
after_parameters = self._extract_after_parameters(request_parameters)
|
|
714
713
|
after_template = structured_template
|
|
715
714
|
|
|
716
715
|
# Create internal change set to execute
|
|
@@ -744,6 +743,11 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
744
743
|
stack.template = change_set.template
|
|
745
744
|
stack.template_body = change_set.template_body
|
|
746
745
|
stack.resolved_parameters = change_set.resolved_parameters
|
|
746
|
+
stack.resolved_exports = {}
|
|
747
|
+
for output in result.outputs:
|
|
748
|
+
if export_name := output.get("ExportName"):
|
|
749
|
+
stack.resolved_exports[export_name] = output["OutputValue"]
|
|
750
|
+
stack.processed_template = change_set.processed_template
|
|
747
751
|
except Exception as e:
|
|
748
752
|
LOG.error(
|
|
749
753
|
"Create Stack set failed: %s",
|
|
@@ -785,59 +789,55 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
785
789
|
|
|
786
790
|
describe_stack_output: list[ApiStack] = []
|
|
787
791
|
for stack in stacks:
|
|
788
|
-
|
|
789
|
-
CreationTime=stack.creation_time,
|
|
790
|
-
DeletionTime=stack.deletion_time,
|
|
791
|
-
StackId=stack.stack_id,
|
|
792
|
-
StackName=stack.stack_name,
|
|
793
|
-
StackStatus=stack.status,
|
|
794
|
-
StackStatusReason=stack.status_reason,
|
|
795
|
-
# fake values
|
|
796
|
-
DisableRollback=False,
|
|
797
|
-
DriftInformation=StackDriftInformation(
|
|
798
|
-
StackDriftStatus=StackDriftStatus.NOT_CHECKED
|
|
799
|
-
),
|
|
800
|
-
EnableTerminationProtection=stack.enable_termination_protection,
|
|
801
|
-
LastUpdatedTime=stack.creation_time,
|
|
802
|
-
RollbackConfiguration=RollbackConfiguration(),
|
|
803
|
-
Tags=[],
|
|
804
|
-
NotificationARNs=[],
|
|
805
|
-
Capabilities=stack.capabilities,
|
|
806
|
-
# "Parameters": stack.resolved_parameters,
|
|
807
|
-
)
|
|
808
|
-
# TODO: confirm the logic for this
|
|
809
|
-
if change_set_id := stack.change_set_id:
|
|
810
|
-
stack_description["ChangeSetId"] = change_set_id
|
|
811
|
-
|
|
812
|
-
if stack.resolved_parameters:
|
|
813
|
-
stack_description["Parameters"] = []
|
|
814
|
-
for name, resolved_parameter in stack.resolved_parameters.items():
|
|
815
|
-
parameter = Parameter(
|
|
816
|
-
ParameterKey=name,
|
|
817
|
-
ParameterValue=resolved_parameter.get("given_value")
|
|
818
|
-
or resolved_parameter.get("default_value"),
|
|
819
|
-
)
|
|
820
|
-
if resolved_value := resolved_parameter.get("resolved_value"):
|
|
821
|
-
parameter["ResolvedValue"] = resolved_value
|
|
822
|
-
stack_description["Parameters"].append(parameter)
|
|
823
|
-
|
|
824
|
-
if stack.resolved_outputs:
|
|
825
|
-
describe_outputs = []
|
|
826
|
-
for key, value in stack.resolved_outputs.items():
|
|
827
|
-
describe_outputs.append(
|
|
828
|
-
Output(
|
|
829
|
-
# TODO(parity): Description, ExportName
|
|
830
|
-
# TODO(parity): what happens on describe stack when the stack has not been deployed yet?
|
|
831
|
-
OutputKey=key,
|
|
832
|
-
OutputValue=value,
|
|
833
|
-
)
|
|
834
|
-
)
|
|
835
|
-
stack_description["Outputs"] = describe_outputs
|
|
836
|
-
|
|
837
|
-
describe_stack_output.append(stack_description)
|
|
792
|
+
describe_stack_output.append(self._describe_stack(stack))
|
|
838
793
|
|
|
839
794
|
return DescribeStacksOutput(Stacks=describe_stack_output)
|
|
840
795
|
|
|
796
|
+
@staticmethod
|
|
797
|
+
def _describe_stack(stack: Stack) -> ApiStack:
|
|
798
|
+
stack_description = ApiStack(
|
|
799
|
+
Description=stack.description,
|
|
800
|
+
CreationTime=stack.creation_time,
|
|
801
|
+
DeletionTime=stack.deletion_time,
|
|
802
|
+
StackId=stack.stack_id,
|
|
803
|
+
StackName=stack.stack_name,
|
|
804
|
+
StackStatus=stack.status,
|
|
805
|
+
StackStatusReason=stack.status_reason,
|
|
806
|
+
# fake values
|
|
807
|
+
DisableRollback=False,
|
|
808
|
+
DriftInformation=StackDriftInformation(StackDriftStatus=StackDriftStatus.NOT_CHECKED),
|
|
809
|
+
EnableTerminationProtection=stack.enable_termination_protection,
|
|
810
|
+
RollbackConfiguration=RollbackConfiguration(),
|
|
811
|
+
Tags=[],
|
|
812
|
+
NotificationARNs=[],
|
|
813
|
+
# "Parameters": stack.resolved_parameters,
|
|
814
|
+
)
|
|
815
|
+
if stack.status != StackStatus.REVIEW_IN_PROGRESS:
|
|
816
|
+
# TODO: actually track updated time
|
|
817
|
+
stack_description["LastUpdatedTime"] = stack.creation_time
|
|
818
|
+
if stack.capabilities:
|
|
819
|
+
stack_description["Capabilities"] = stack.capabilities
|
|
820
|
+
# TODO: confirm the logic for this
|
|
821
|
+
if change_set_id := stack.change_set_id:
|
|
822
|
+
stack_description["ChangeSetId"] = change_set_id
|
|
823
|
+
|
|
824
|
+
if stack.resolved_parameters:
|
|
825
|
+
stack_description["Parameters"] = []
|
|
826
|
+
for name, resolved_parameter in stack.resolved_parameters.items():
|
|
827
|
+
parameter = Parameter(
|
|
828
|
+
ParameterKey=name,
|
|
829
|
+
ParameterValue=resolved_parameter.get("given_value")
|
|
830
|
+
or resolved_parameter.get("default_value"),
|
|
831
|
+
)
|
|
832
|
+
if resolved_value := resolved_parameter.get("resolved_value"):
|
|
833
|
+
parameter["ResolvedValue"] = resolved_value
|
|
834
|
+
stack_description["Parameters"].append(parameter)
|
|
835
|
+
|
|
836
|
+
if stack.resolved_outputs:
|
|
837
|
+
stack_description["Outputs"] = stack.resolved_outputs
|
|
838
|
+
|
|
839
|
+
return stack_description
|
|
840
|
+
|
|
841
841
|
@handler("ListStacks")
|
|
842
842
|
def list_stacks(
|
|
843
843
|
self,
|
|
@@ -849,7 +849,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
849
849
|
state = get_cloudformation_store(context.account_id, context.region)
|
|
850
850
|
|
|
851
851
|
stacks = [
|
|
852
|
-
|
|
852
|
+
self._describe_stack(s)
|
|
853
853
|
for s in state.stacks_v2.values()
|
|
854
854
|
if not stack_status_filter or s.status in stack_status_filter
|
|
855
855
|
]
|
|
@@ -1330,10 +1330,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
1330
1330
|
# is needed for the update graph building, or only looked up in downstream tasks (metadata).
|
|
1331
1331
|
request_parameters = request.get("Parameters", list())
|
|
1332
1332
|
# TODO: handle parameter defaults and resolution
|
|
1333
|
-
after_parameters
|
|
1334
|
-
|
|
1335
|
-
for parameter in request_parameters
|
|
1336
|
-
}
|
|
1333
|
+
after_parameters = self._extract_after_parameters(request_parameters, before_parameters)
|
|
1334
|
+
|
|
1337
1335
|
before_template = stack.template
|
|
1338
1336
|
after_template = structured_template
|
|
1339
1337
|
|
|
@@ -1377,6 +1375,10 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
1377
1375
|
stack.template = change_set.template
|
|
1378
1376
|
stack.template_body = change_set.template_body
|
|
1379
1377
|
stack.resolved_parameters = change_set.resolved_parameters
|
|
1378
|
+
stack.resolved_exports = {}
|
|
1379
|
+
for output in result.outputs:
|
|
1380
|
+
if export_name := output.get("ExportName"):
|
|
1381
|
+
stack.resolved_exports[export_name] = output["OutputValue"]
|
|
1380
1382
|
except Exception as e:
|
|
1381
1383
|
LOG.error(
|
|
1382
1384
|
"Update Stack failed: %s",
|
|
@@ -1387,9 +1389,31 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
1387
1389
|
|
|
1388
1390
|
start_worker_thread(_run)
|
|
1389
1391
|
|
|
1390
|
-
# TODO: stack id
|
|
1391
1392
|
return UpdateStackOutput(StackId=stack.stack_id)
|
|
1392
1393
|
|
|
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
|
+
before = before_parameters[key]
|
|
1405
|
+
after_parameters[key] = (
|
|
1406
|
+
before.get("resolved_value")
|
|
1407
|
+
or before.get("given_value")
|
|
1408
|
+
or before.get("default_value")
|
|
1409
|
+
)
|
|
1410
|
+
continue
|
|
1411
|
+
|
|
1412
|
+
if "ParameterValue" in parameter:
|
|
1413
|
+
after_parameters[key] = parameter["ParameterValue"]
|
|
1414
|
+
continue
|
|
1415
|
+
return after_parameters
|
|
1416
|
+
|
|
1393
1417
|
@handler("DeleteStack")
|
|
1394
1418
|
def delete_stack(
|
|
1395
1419
|
self,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import NotRequired, TypedDict
|
|
3
|
+
|
|
4
|
+
from localstack.aws.api.cloudformation import ResourceStatus
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class EngineParameter(TypedDict):
|
|
8
|
+
"""
|
|
9
|
+
Parameters supplied by the user. The resolved value field is populated by the engine
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
type_: str
|
|
13
|
+
given_value: NotRequired[str | None]
|
|
14
|
+
resolved_value: NotRequired[str | None]
|
|
15
|
+
default_value: NotRequired[str | None]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def engine_parameter_value(parameter: EngineParameter) -> str:
|
|
19
|
+
value = parameter.get("given_value") or parameter.get("default_value")
|
|
20
|
+
if value is None:
|
|
21
|
+
raise RuntimeError("Parameter value is None")
|
|
22
|
+
|
|
23
|
+
return value
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ResolvedResource(TypedDict):
|
|
27
|
+
LogicalResourceId: str
|
|
28
|
+
Type: str
|
|
29
|
+
Properties: dict
|
|
30
|
+
ResourceStatus: ResourceStatus
|
|
31
|
+
PhysicalResourceId: str | None
|
|
32
|
+
LastUpdatedTimestamp: datetime | None
|
localstack/version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '4.7.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (4, 7, 1, '
|
|
31
|
+
__version__ = version = '4.7.1.dev34'
|
|
32
|
+
__version_tuple__ = version_tuple = (4, 7, 1, 'dev34')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -4,7 +4,7 @@ localstack/deprecations.py,sha256=78Sf99fgH3ckJ20a9SMqsu01r1cm5GgcomkuY4yDMDo,15
|
|
|
4
4
|
localstack/openapi.yaml,sha256=B803NmpwsxG8PHpHrdZYBrUYjnrRh7B_JX0XuNynuFs,30237
|
|
5
5
|
localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
|
|
6
6
|
localstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
localstack/version.py,sha256=
|
|
7
|
+
localstack/version.py,sha256=N28yTS3_rOHeB7wMoZz1FnlF_iB1QGMMYAzjWv-QjBQ,719
|
|
8
8
|
localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
|
|
10
10
|
localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
|
|
@@ -311,9 +311,9 @@ localstack/services/cloudformation/engine/types.py,sha256=JQF2aM5DUtnJhvQ30RTaKv
|
|
|
311
311
|
localstack/services/cloudformation/engine/validations.py,sha256=brq7s8O8exA5kvnfzR9ulOtQ7i4konrWQs07-0h_ByE,2847
|
|
312
312
|
localstack/services/cloudformation/engine/yaml_parser.py,sha256=LQpAVq9Syze9jXUGen9Mz8SjosBuodpV5XvsCSn9bDg,2164
|
|
313
313
|
localstack/services/cloudformation/engine/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
314
|
-
localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=
|
|
314
|
+
localstack/services/cloudformation/engine/v2/change_set_model.py,sha256=wbDl3SiTmWl4gH15uTCXCZFS3XbQcnfTVVOgUo-L6Ak,60617
|
|
315
315
|
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=m5L2DRkQjxU-CXEHhdMwptQuYWwXHpcDNv1kqt15cYI,10401
|
|
316
|
-
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=
|
|
316
|
+
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=Hrsd2iSoQ2kAEyPCZ5rEZNRYyo7ns2JmCrGS2Tj2PWY,25811
|
|
317
317
|
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=QnH7Ok9RMV8KlfLU9FtsWGdMdJdka_QHvmMiHOybbek,52550
|
|
318
318
|
localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=vynAvpnRQv7F0G0Z6g3gFmwtfdaeX71TBlZWMKctawg,13395
|
|
319
319
|
localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=tfFIQaY27v0PI9L2tMZfhQ47ODrMWg9czucXa6iePeE,6345
|
|
@@ -336,8 +336,9 @@ localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcon
|
|
|
336
336
|
localstack/services/cloudformation/scaffolding/__main__.py,sha256=K25POLQlhmM_-lGfse1xo4UJLQOIoK35VqQInjXS91Y,30959
|
|
337
337
|
localstack/services/cloudformation/scaffolding/propgen.py,sha256=id7l43zsJsTgUyQ8F3jpfbpEoicc8GC6cB2ESEktDxc,7936
|
|
338
338
|
localstack/services/cloudformation/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
339
|
-
localstack/services/cloudformation/v2/entities.py,sha256=
|
|
340
|
-
localstack/services/cloudformation/v2/provider.py,sha256=
|
|
339
|
+
localstack/services/cloudformation/v2/entities.py,sha256=Q-3ixLWSmmjhClBIzGo6469oU73-DAPa8ZSXWixuUHk,8976
|
|
340
|
+
localstack/services/cloudformation/v2/provider.py,sha256=Q6MuoZpl5y6-u2mMIeeaBtMDTY0C9VMNF1hgs-stQw4,61493
|
|
341
|
+
localstack/services/cloudformation/v2/types.py,sha256=YOKERHmgRjK3RCjqKwQ3ZxZKfa0D-Uwjt2W9GaFDkiM,864
|
|
341
342
|
localstack/services/cloudformation/v2/utils.py,sha256=xy4Lcp4X8XGJ0OKfnsE7pnfMcFrtIH0Chw35qwjhZuw,148
|
|
342
343
|
localstack/services/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
343
344
|
localstack/services/cloudwatch/alarm_scheduler.py,sha256=ZgvNwcWn-uI51zCz2Vecchu2jhLlJr2eh9QryE34Pv0,15630
|
|
@@ -1285,13 +1286,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
|
1285
1286
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1286
1287
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
|
1287
1288
|
localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
|
|
1288
|
-
localstack_core-4.7.1.
|
|
1289
|
-
localstack_core-4.7.1.
|
|
1290
|
-
localstack_core-4.7.1.
|
|
1291
|
-
localstack_core-4.7.1.
|
|
1292
|
-
localstack_core-4.7.1.
|
|
1293
|
-
localstack_core-4.7.1.
|
|
1294
|
-
localstack_core-4.7.1.
|
|
1295
|
-
localstack_core-4.7.1.
|
|
1296
|
-
localstack_core-4.7.1.
|
|
1297
|
-
localstack_core-4.7.1.
|
|
1289
|
+
localstack_core-4.7.1.dev34.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
|
1290
|
+
localstack_core-4.7.1.dev34.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
|
1291
|
+
localstack_core-4.7.1.dev34.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
|
1292
|
+
localstack_core-4.7.1.dev34.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
|
1293
|
+
localstack_core-4.7.1.dev34.dist-info/METADATA,sha256=gyAm-yf8701UNUa6rLFrrM2Bs5dJilYMpwBTsGOFryU,5570
|
|
1294
|
+
localstack_core-4.7.1.dev34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1295
|
+
localstack_core-4.7.1.dev34.dist-info/entry_points.txt,sha256=-GFtw80qM_1GQIDUcyqXojJvnqvP_8lK1Vc-M9ShaJE,20668
|
|
1296
|
+
localstack_core-4.7.1.dev34.dist-info/plux.json,sha256=_87sLzPae1y-5iW5qdTH13TDC-FDQHCO-FyPuAAPMu4,20891
|
|
1297
|
+
localstack_core-4.7.1.dev34.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
|
1298
|
+
localstack_core-4.7.1.dev34.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin"], "localstack.hooks.on_infra_shutdown": ["publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics", "stop_server=localstack.dns.plugins:stop_server", "run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.hooks.on_infra_start": ["setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "eager_load_services=localstack.services.plugins:eager_load_services", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui"], "localstack.packages": ["kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"localstack.cloudformation.resource_providers": ["AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::SSM::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin"], "localstack.hooks.on_infra_start": ["apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "_patch_botocore_endpoint_in_memory=localstack.aws.client:_patch_botocore_endpoint_in_memory", "_patch_botocore_json_parser=localstack.aws.client:_patch_botocore_json_parser", "_patch_cbor2=localstack.aws.client:_patch_cbor2", "eager_load_services=localstack.services.plugins:eager_load_services", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings"], "localstack.hooks.configure_localstack_container": ["_mount_machine_file=localstack.utils.analytics.metadata:_mount_machine_file"], "localstack.hooks.prepare_host": ["prepare_host_machine_id=localstack.utils.analytics.metadata:prepare_host_machine_id"], "localstack.packages": ["kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package"], "localstack.hooks.on_infra_shutdown": ["run_on_after_service_shutdown_handlers=localstack.runtime.shutdown:run_on_after_service_shutdown_handlers", "run_shutdown_handlers=localstack.runtime.shutdown:run_shutdown_handlers", "shutdown_services=localstack.runtime.shutdown:shutdown_services", "publish_metrics=localstack.utils.analytics.metrics.publisher:publish_metrics", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "stop_server=localstack.dns.plugins:stop_server"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.hooks.on_infra_ready": ["_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"], "localstack.lambda.runtime_executor": ["docker=localstack.services.lambda_.invocation.plugins:DockerRuntimeExecutorPlugin"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.aws.provider": ["acm:default=localstack.services.providers:acm", "apigateway:default=localstack.services.providers:apigateway", "apigateway:legacy=localstack.services.providers:apigateway_legacy", "apigateway:next_gen=localstack.services.providers:apigateway_next_gen", "config:default=localstack.services.providers:awsconfig", "cloudformation:default=localstack.services.providers:cloudformation", "cloudformation:engine-v2=localstack.services.providers:cloudformation_v2", "cloudwatch:default=localstack.services.providers:cloudwatch", "cloudwatch:v1=localstack.services.providers:cloudwatch_v1", "cloudwatch:v2=localstack.services.providers:cloudwatch_v2", "dynamodb:default=localstack.services.providers:dynamodb", "dynamodb:v2=localstack.services.providers:dynamodb_v2", "dynamodbstreams:default=localstack.services.providers:dynamodbstreams", "dynamodbstreams:v2=localstack.services.providers:dynamodbstreams_v2", "ec2:default=localstack.services.providers:ec2", "es:default=localstack.services.providers:es", "events:default=localstack.services.providers:events", "events:legacy=localstack.services.providers:events_legacy", "events:v1=localstack.services.providers:events_v1", "events:v2=localstack.services.providers:events_v2", "firehose:default=localstack.services.providers:firehose", "iam:default=localstack.services.providers:iam", "kinesis:default=localstack.services.providers:kinesis", "kms:default=localstack.services.providers:kms", "lambda:default=localstack.services.providers:lambda_", "lambda:asf=localstack.services.providers:lambda_asf", "lambda:v2=localstack.services.providers:lambda_v2", "logs:default=localstack.services.providers:logs", "opensearch:default=localstack.services.providers:opensearch", "redshift:default=localstack.services.providers:redshift", "resource-groups:default=localstack.services.providers:resource_groups", "resourcegroupstaggingapi:default=localstack.services.providers:resourcegroupstaggingapi", "route53:default=localstack.services.providers:route53", "route53resolver:default=localstack.services.providers:route53resolver", "s3:default=localstack.services.providers:s3", "s3control:default=localstack.services.providers:s3control", "scheduler:default=localstack.services.providers:scheduler", "secretsmanager:default=localstack.services.providers:secretsmanager", "ses:default=localstack.services.providers:ses", "sns:default=localstack.services.providers:sns", "sqs:default=localstack.services.providers:sqs", "ssm:default=localstack.services.providers:ssm", "stepfunctions:default=localstack.services.providers:stepfunctions", "stepfunctions:v2=localstack.services.providers:stepfunctions_v2", "sts:default=localstack.services.providers:sts", "support:default=localstack.services.providers:support", "swf:default=localstack.services.providers:swf", "transcribe:default=localstack.services.providers:transcribe"]}
|
|
File without changes
|
{localstack_core-4.7.1.dev33.data → localstack_core-4.7.1.dev34.data}/scripts/localstack-supervisor
RENAMED
|
File without changes
|
{localstack_core-4.7.1.dev33.data → localstack_core-4.7.1.dev34.data}/scripts/localstack.bat
RENAMED
|
File without changes
|
|
File without changes
|
{localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/licenses/LICENSE.txt
RENAMED
|
File without changes
|
{localstack_core-4.7.1.dev33.dist-info → localstack_core-4.7.1.dev34.dist-info}/top_level.txt
RENAMED
|
File without changes
|