localstack-core 4.7.1.dev79__py3-none-any.whl → 4.7.1.dev82__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 +45 -2
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +73 -19
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +16 -5
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +10 -1
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +9 -0
- localstack/services/cloudformation/v2/entities.py +4 -3
- localstack/services/cloudformation/v2/provider.py +24 -18
- localstack/services/cloudformation/v2/types.py +4 -3
- localstack/testing/pytest/cloudformation/transformers.py +0 -0
- localstack/utils/docker_utils.py +6 -1
- localstack/version.py +2 -2
- {localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/METADATA +1 -1
- {localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/RECORD +21 -20
- localstack_core-4.7.1.dev82.dist-info/plux.json +1 -0
- localstack_core-4.7.1.dev79.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev79.data → localstack_core-4.7.1.dev82.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev79.data → localstack_core-4.7.1.dev82.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev79.data → localstack_core-4.7.1.dev82.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/top_level.txt +0 -0
|
@@ -372,17 +372,20 @@ class NodeTransform(ChangeSetNode):
|
|
|
372
372
|
class NodeResources(ChangeSetNode):
|
|
373
373
|
resources: Final[list[NodeResource]]
|
|
374
374
|
fn_transform: Final[Maybe[NodeIntrinsicFunctionFnTransform]]
|
|
375
|
+
fn_foreaches: Final[list[NodeForEach]]
|
|
375
376
|
|
|
376
377
|
def __init__(
|
|
377
378
|
self,
|
|
378
379
|
scope: Scope,
|
|
379
380
|
resources: list[NodeResource],
|
|
380
381
|
fn_transform: Maybe[NodeIntrinsicFunctionFnTransform],
|
|
382
|
+
fn_foreaches: list[NodeForEach],
|
|
381
383
|
):
|
|
382
|
-
change_type = parent_change_type_of(resources)
|
|
384
|
+
change_type = parent_change_type_of(resources + [fn_transform] + fn_foreaches)
|
|
383
385
|
super().__init__(scope=scope, change_type=change_type)
|
|
384
386
|
self.resources = resources
|
|
385
387
|
self.fn_transform = fn_transform
|
|
388
|
+
self.fn_foreaches = fn_foreaches
|
|
386
389
|
|
|
387
390
|
|
|
388
391
|
class NodeResource(ChangeSetNode):
|
|
@@ -492,6 +495,20 @@ class NodeIntrinsicFunctionFnTransform(NodeIntrinsicFunction):
|
|
|
492
495
|
self.after_siblings = after_siblings
|
|
493
496
|
|
|
494
497
|
|
|
498
|
+
class NodeForEach(ChangeSetNode):
|
|
499
|
+
def __init__(
|
|
500
|
+
self,
|
|
501
|
+
scope: Scope,
|
|
502
|
+
change_type: Final[ChangeType],
|
|
503
|
+
arguments: Final[ChangeSetEntity],
|
|
504
|
+
):
|
|
505
|
+
super().__init__(
|
|
506
|
+
scope=scope,
|
|
507
|
+
change_type=change_type,
|
|
508
|
+
)
|
|
509
|
+
self.arguments = arguments
|
|
510
|
+
|
|
511
|
+
|
|
495
512
|
class NodeObject(ChangeSetNode):
|
|
496
513
|
bindings: Final[dict[str, ChangeSetEntity]]
|
|
497
514
|
|
|
@@ -709,6 +726,18 @@ class ChangeSetModel:
|
|
|
709
726
|
self._visited_scopes[scope] = node_intrinsic_function
|
|
710
727
|
return node_intrinsic_function
|
|
711
728
|
|
|
729
|
+
def _visit_foreach(
|
|
730
|
+
self, scope: Scope, before_arguments: Maybe[list], after_arguments: Maybe[list]
|
|
731
|
+
) -> NodeForEach:
|
|
732
|
+
node_foreach = self._visited_scopes.get(scope)
|
|
733
|
+
if isinstance(node_foreach, NodeForEach):
|
|
734
|
+
return node_foreach
|
|
735
|
+
arguments_scope = scope.open_scope("args")
|
|
736
|
+
arguments = self._visit_array(
|
|
737
|
+
arguments_scope, before_array=before_arguments, after_array=after_arguments
|
|
738
|
+
)
|
|
739
|
+
return NodeForEach(scope=scope, change_type=arguments.change_type, arguments=arguments)
|
|
740
|
+
|
|
712
741
|
def _resolve_intrinsic_function_fn_sub(self, arguments: ChangeSetEntity) -> ChangeType:
|
|
713
742
|
# TODO: This routine should instead export the implicit Ref and GetAtt calls within the first
|
|
714
743
|
# string template parameter and compute the respective change set types. Currently,
|
|
@@ -1165,6 +1194,7 @@ class ChangeSetModel:
|
|
|
1165
1194
|
resources: list[NodeResource] = []
|
|
1166
1195
|
resource_names = self._safe_keys_of(before_resources, after_resources)
|
|
1167
1196
|
fn_transform = Nothing
|
|
1197
|
+
fn_foreaches = []
|
|
1168
1198
|
for resource_name in resource_names:
|
|
1169
1199
|
resource_scope, (before_resource, after_resource) = self._safe_access_in(
|
|
1170
1200
|
scope, resource_name, before_resources, after_resources
|
|
@@ -1177,6 +1207,14 @@ class ChangeSetModel:
|
|
|
1177
1207
|
after_arguments=after_resource,
|
|
1178
1208
|
)
|
|
1179
1209
|
continue
|
|
1210
|
+
elif resource_name.startswith("Fn::ForEach"):
|
|
1211
|
+
fn_for_each = self._visit_foreach(
|
|
1212
|
+
scope=resource_scope,
|
|
1213
|
+
before_arguments=before_resource,
|
|
1214
|
+
after_arguments=after_resource,
|
|
1215
|
+
)
|
|
1216
|
+
fn_foreaches.append(fn_for_each)
|
|
1217
|
+
continue
|
|
1180
1218
|
resource = self._visit_resource(
|
|
1181
1219
|
scope=resource_scope,
|
|
1182
1220
|
resource_name=resource_name,
|
|
@@ -1184,7 +1222,12 @@ class ChangeSetModel:
|
|
|
1184
1222
|
after_resource=after_resource,
|
|
1185
1223
|
)
|
|
1186
1224
|
resources.append(resource)
|
|
1187
|
-
return NodeResources(
|
|
1225
|
+
return NodeResources(
|
|
1226
|
+
scope=scope,
|
|
1227
|
+
resources=resources,
|
|
1228
|
+
fn_transform=fn_transform,
|
|
1229
|
+
fn_foreaches=fn_foreaches,
|
|
1230
|
+
)
|
|
1188
1231
|
|
|
1189
1232
|
def _visit_mapping(
|
|
1190
1233
|
self, scope: Scope, name: str, before_mapping: Maybe[dict], after_mapping: Maybe[dict]
|
|
@@ -53,6 +53,7 @@ EventOperationFromAction = {"Add": "CREATE", "Modify": "UPDATE", "Remove": "DELE
|
|
|
53
53
|
class ChangeSetModelExecutorResult:
|
|
54
54
|
resources: dict[str, ResolvedResource]
|
|
55
55
|
outputs: list[Output]
|
|
56
|
+
failure_message: str | None = None
|
|
56
57
|
|
|
57
58
|
|
|
58
59
|
class DeferredAction(Protocol):
|
|
@@ -65,6 +66,16 @@ class Deferred:
|
|
|
65
66
|
action: DeferredAction
|
|
66
67
|
|
|
67
68
|
|
|
69
|
+
class TriggerRollback(Exception):
|
|
70
|
+
"""
|
|
71
|
+
Sentinel exception to signal that the deployment should be stopped for a reason
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
def __init__(self, logical_resource_id: str, reason: str | None):
|
|
75
|
+
self.logical_resource_id = logical_resource_id
|
|
76
|
+
self.reason = reason
|
|
77
|
+
|
|
78
|
+
|
|
68
79
|
class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
69
80
|
# TODO: add typing for resolved resources and parameters.
|
|
70
81
|
resources: Final[dict[str, ResolvedResource]]
|
|
@@ -83,10 +94,23 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
83
94
|
|
|
84
95
|
def execute(self) -> ChangeSetModelExecutorResult:
|
|
85
96
|
# constructive process
|
|
86
|
-
|
|
97
|
+
failure_message = None
|
|
98
|
+
try:
|
|
99
|
+
self.process()
|
|
100
|
+
except TriggerRollback as e:
|
|
101
|
+
failure_message = e.reason
|
|
102
|
+
except Exception as e:
|
|
103
|
+
failure_message = str(e)
|
|
87
104
|
|
|
88
105
|
if self._deferred_actions:
|
|
89
|
-
|
|
106
|
+
if failure_message:
|
|
107
|
+
# TODO: differentiate between update and create
|
|
108
|
+
self._change_set.stack.set_stack_status(StackStatus.ROLLBACK_IN_PROGRESS)
|
|
109
|
+
else:
|
|
110
|
+
# TODO: correct status
|
|
111
|
+
self._change_set.stack.set_stack_status(
|
|
112
|
+
StackStatus.UPDATE_COMPLETE_CLEANUP_IN_PROGRESS
|
|
113
|
+
)
|
|
90
114
|
|
|
91
115
|
# perform all deferred actions such as deletions. These must happen in reverse from their
|
|
92
116
|
# defined order so that resource dependencies are honoured
|
|
@@ -95,9 +119,12 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
95
119
|
LOG.debug("executing deferred action: '%s'", deferred.name)
|
|
96
120
|
deferred.action()
|
|
97
121
|
|
|
122
|
+
if failure_message:
|
|
123
|
+
# TODO: differentiate between update and create
|
|
124
|
+
self._change_set.stack.set_stack_status(StackStatus.ROLLBACK_COMPLETE)
|
|
125
|
+
|
|
98
126
|
return ChangeSetModelExecutorResult(
|
|
99
|
-
resources=self.resources,
|
|
100
|
-
outputs=self.outputs,
|
|
127
|
+
resources=self.resources, outputs=self.outputs, failure_message=failure_message
|
|
101
128
|
)
|
|
102
129
|
|
|
103
130
|
def _defer_action(self, name: str, action: DeferredAction):
|
|
@@ -137,9 +164,10 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
137
164
|
else:
|
|
138
165
|
status = f"{status_from_action}_{event_status.name}"
|
|
139
166
|
|
|
167
|
+
physical_resource_id = self._get_physical_id(logical_resource_id, False)
|
|
140
168
|
self._change_set.stack.set_resource_status(
|
|
141
169
|
logical_resource_id=logical_resource_id,
|
|
142
|
-
physical_resource_id=
|
|
170
|
+
physical_resource_id=physical_resource_id,
|
|
143
171
|
resource_type=resource_type,
|
|
144
172
|
status=ResourceStatus(status),
|
|
145
173
|
resource_status_reason=reason,
|
|
@@ -219,10 +247,24 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
219
247
|
# Update the latest version of this resource for downstream references.
|
|
220
248
|
if not is_nothing(after):
|
|
221
249
|
after_logical_id = after.logical_id
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
250
|
+
resource = self.resources[after_logical_id]
|
|
251
|
+
resource_failed_to_deploy = resource["ResourceStatus"] in {
|
|
252
|
+
ResourceStatus.CREATE_FAILED,
|
|
253
|
+
ResourceStatus.UPDATE_FAILED,
|
|
254
|
+
}
|
|
255
|
+
if not resource_failed_to_deploy:
|
|
256
|
+
after_physical_id: str = self._after_resource_physical_id(
|
|
257
|
+
resource_logical_id=after_logical_id
|
|
258
|
+
)
|
|
259
|
+
after.physical_resource_id = after_physical_id
|
|
260
|
+
after.status = resource["ResourceStatus"]
|
|
261
|
+
|
|
262
|
+
# terminate the deployment process
|
|
263
|
+
if resource_failed_to_deploy:
|
|
264
|
+
raise TriggerRollback(
|
|
265
|
+
logical_resource_id=after_logical_id,
|
|
266
|
+
reason=resource.get("ResourceStatusReason"),
|
|
267
|
+
)
|
|
226
268
|
return delta
|
|
227
269
|
|
|
228
270
|
def visit_node_output(
|
|
@@ -291,6 +333,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
291
333
|
resource_type=before.resource_type,
|
|
292
334
|
before_properties=before_properties,
|
|
293
335
|
after_properties=None,
|
|
336
|
+
part_of_replacement=True,
|
|
294
337
|
)
|
|
295
338
|
self._process_event(
|
|
296
339
|
action=ChangeAction.Remove,
|
|
@@ -425,6 +468,7 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
425
468
|
resource_type: str,
|
|
426
469
|
before_properties: PreprocProperties | None,
|
|
427
470
|
after_properties: PreprocProperties | None,
|
|
471
|
+
part_of_replacement: bool = False,
|
|
428
472
|
) -> ProgressEvent:
|
|
429
473
|
LOG.debug("Executing resource action: %s for resource '%s'", action, logical_resource_id)
|
|
430
474
|
payload = self.create_resource_provider_payload(
|
|
@@ -481,6 +525,19 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
481
525
|
message=f"Resource type {resource_type} not supported",
|
|
482
526
|
)
|
|
483
527
|
|
|
528
|
+
if part_of_replacement and action == ChangeAction.Remove:
|
|
529
|
+
# Early return as we don't want to update internal state of the executor if this is a
|
|
530
|
+
# cleanup of an old resource. The new resource has already been created and the state
|
|
531
|
+
# updated
|
|
532
|
+
return event
|
|
533
|
+
|
|
534
|
+
status_from_action = EventOperationFromAction[action.value]
|
|
535
|
+
resolved_resource = ResolvedResource(
|
|
536
|
+
Properties=event.resource_model,
|
|
537
|
+
LogicalResourceId=logical_resource_id,
|
|
538
|
+
Type=resource_type,
|
|
539
|
+
LastUpdatedTimestamp=datetime.now(UTC),
|
|
540
|
+
)
|
|
484
541
|
match event.status:
|
|
485
542
|
case OperationStatus.SUCCESS:
|
|
486
543
|
# merge the resources state with the external state
|
|
@@ -495,33 +552,30 @@ class ChangeSetModelExecutor(ChangeSetModelPreproc):
|
|
|
495
552
|
|
|
496
553
|
# Don't update the resolved resources if we have deleted that resource
|
|
497
554
|
if action != ChangeAction.Remove:
|
|
498
|
-
status_from_action = EventOperationFromAction[action.value]
|
|
499
555
|
physical_resource_id = (
|
|
500
556
|
extra_resource_properties["PhysicalResourceId"]
|
|
501
557
|
if resource_provider
|
|
502
558
|
else MOCKED_REFERENCE
|
|
503
559
|
)
|
|
504
|
-
resolved_resource =
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
Type=resource_type,
|
|
508
|
-
LastUpdatedTimestamp=datetime.now(UTC),
|
|
509
|
-
ResourceStatus=ResourceStatus(f"{status_from_action}_COMPLETE"),
|
|
510
|
-
PhysicalResourceId=physical_resource_id,
|
|
560
|
+
resolved_resource["PhysicalResourceId"] = physical_resource_id
|
|
561
|
+
resolved_resource["ResourceStatus"] = ResourceStatus(
|
|
562
|
+
f"{status_from_action}_COMPLETE"
|
|
511
563
|
)
|
|
512
564
|
# TODO: do we actually need this line?
|
|
513
565
|
resolved_resource.update(extra_resource_properties)
|
|
514
566
|
|
|
515
|
-
self.resources[logical_resource_id] = resolved_resource
|
|
516
|
-
|
|
517
567
|
case OperationStatus.FAILED:
|
|
518
568
|
reason = event.message
|
|
519
569
|
LOG.warning(
|
|
520
570
|
"Resource provider operation failed: '%s'",
|
|
521
571
|
reason,
|
|
522
572
|
)
|
|
573
|
+
resolved_resource["ResourceStatus"] = ResourceStatus(f"{status_from_action}_FAILED")
|
|
574
|
+
resolved_resource["ResourceStatusReason"] = reason
|
|
523
575
|
case other:
|
|
524
576
|
raise NotImplementedError(f"Event status '{other}' not handled")
|
|
577
|
+
|
|
578
|
+
self.resources[logical_resource_id] = resolved_resource
|
|
525
579
|
return event
|
|
526
580
|
|
|
527
581
|
def create_resource_provider_payload(
|
|
@@ -9,6 +9,7 @@ from typing import Any, Final, Generic, TypeVar
|
|
|
9
9
|
from botocore.exceptions import ClientError
|
|
10
10
|
|
|
11
11
|
from localstack import config
|
|
12
|
+
from localstack.aws.api.cloudformation import ResourceStatus
|
|
12
13
|
from localstack.aws.api.ec2 import AvailabilityZoneList, DescribeAvailabilityZonesResult
|
|
13
14
|
from localstack.aws.connect import connect_to
|
|
14
15
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
@@ -52,6 +53,7 @@ from localstack.services.cloudformation.stores import (
|
|
|
52
53
|
exports_map,
|
|
53
54
|
)
|
|
54
55
|
from localstack.services.cloudformation.v2.entities import ChangeSet
|
|
56
|
+
from localstack.services.cloudformation.v2.types import ResolvedResource
|
|
55
57
|
from localstack.utils.aws.arns import get_partition
|
|
56
58
|
from localstack.utils.objects import get_value_from_path
|
|
57
59
|
from localstack.utils.run import to_str
|
|
@@ -113,6 +115,7 @@ class PreprocResource:
|
|
|
113
115
|
properties: PreprocProperties
|
|
114
116
|
depends_on: list[str] | None
|
|
115
117
|
requires_replacement: bool
|
|
118
|
+
status: ResourceStatus | None
|
|
116
119
|
|
|
117
120
|
def __init__(
|
|
118
121
|
self,
|
|
@@ -123,6 +126,7 @@ class PreprocResource:
|
|
|
123
126
|
properties: PreprocProperties,
|
|
124
127
|
depends_on: list[str] | None,
|
|
125
128
|
requires_replacement: bool,
|
|
129
|
+
status: ResourceStatus | None = None,
|
|
126
130
|
):
|
|
127
131
|
self.logical_id = logical_id
|
|
128
132
|
self.physical_resource_id = physical_resource_id
|
|
@@ -131,6 +135,7 @@ class PreprocResource:
|
|
|
131
135
|
self.properties = properties
|
|
132
136
|
self.depends_on = depends_on
|
|
133
137
|
self.requires_replacement = requires_replacement
|
|
138
|
+
self.status = status
|
|
134
139
|
|
|
135
140
|
@staticmethod
|
|
136
141
|
def _compare_conditions(c1: bool, c2: bool):
|
|
@@ -486,9 +491,9 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
|
486
491
|
delta: PreprocEntityDelta = self.visit(change_set_entity=change_set_entity)
|
|
487
492
|
delta_before = delta.before
|
|
488
493
|
delta_after = delta.after
|
|
489
|
-
if not is_nothing(before) and not is_nothing(delta_before)
|
|
494
|
+
if not is_nothing(before) and not is_nothing(delta_before):
|
|
490
495
|
before[name] = delta_before
|
|
491
|
-
if not is_nothing(after) and not is_nothing(delta_after)
|
|
496
|
+
if not is_nothing(after) and not is_nothing(delta_after):
|
|
492
497
|
after[name] = delta_after
|
|
493
498
|
return PreprocEntityDelta(before=before, after=after)
|
|
494
499
|
|
|
@@ -946,11 +951,17 @@ class ChangeSetModelPreproc(ChangeSetModelVisitor):
|
|
|
946
951
|
return delta
|
|
947
952
|
|
|
948
953
|
def _resource_physical_resource_id_from(
|
|
949
|
-
self, logical_resource_id: str, resolved_resources: dict
|
|
950
|
-
) -> str:
|
|
954
|
+
self, logical_resource_id: str, resolved_resources: dict[str, ResolvedResource]
|
|
955
|
+
) -> str | None:
|
|
951
956
|
# TODO: typing around resolved resources is needed and should be reflected here.
|
|
952
957
|
resolved_resource = resolved_resources.get(logical_resource_id, {})
|
|
953
|
-
|
|
958
|
+
if resolved_resource.get("ResourceStatus") not in {
|
|
959
|
+
ResourceStatus.CREATE_COMPLETE,
|
|
960
|
+
ResourceStatus.UPDATE_COMPLETE,
|
|
961
|
+
}:
|
|
962
|
+
return None
|
|
963
|
+
|
|
964
|
+
physical_resource_id = resolved_resource.get("PhysicalResourceId")
|
|
954
965
|
if not isinstance(physical_resource_id, str):
|
|
955
966
|
raise RuntimeError(f"No PhysicalResourceId found for resource '{logical_resource_id}'")
|
|
956
967
|
return physical_resource_id
|
|
@@ -23,6 +23,7 @@ from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
|
23
23
|
ChangeType,
|
|
24
24
|
FnTransform,
|
|
25
25
|
Maybe,
|
|
26
|
+
NodeForEach,
|
|
26
27
|
NodeGlobalTransform,
|
|
27
28
|
NodeIntrinsicFunction,
|
|
28
29
|
NodeIntrinsicFunctionFnTransform,
|
|
@@ -356,6 +357,9 @@ class ChangeSetModelTransform(ChangeSetModelPreproc):
|
|
|
356
357
|
|
|
357
358
|
return result_template
|
|
358
359
|
|
|
360
|
+
def visit_node_for_each(self, node_foreach: NodeForEach) -> PreprocEntityDelta:
|
|
361
|
+
return PreprocEntityDelta()
|
|
362
|
+
|
|
359
363
|
def visit_node_intrinsic_function_fn_transform(
|
|
360
364
|
self, node_intrinsic_function: NodeIntrinsicFunctionFnTransform
|
|
361
365
|
) -> PreprocEntityDelta:
|
|
@@ -411,7 +415,12 @@ class ChangeSetModelTransform(ChangeSetModelPreproc):
|
|
|
411
415
|
node_intrinsic_function=node_resource.fn_transform
|
|
412
416
|
)
|
|
413
417
|
|
|
414
|
-
|
|
418
|
+
try:
|
|
419
|
+
if delta := super().visit_node_resource(node_resource):
|
|
420
|
+
return delta
|
|
421
|
+
return super().visit_node_properties(node_resource.properties)
|
|
422
|
+
except RuntimeError:
|
|
423
|
+
return super().visit_node_properties(node_resource.properties)
|
|
415
424
|
|
|
416
425
|
def visit_node_resources(self, node_resources: NodeResources) -> PreprocEntityDelta:
|
|
417
426
|
if not is_nothing(node_resources.fn_transform):
|
|
@@ -4,6 +4,7 @@ from typing import Any
|
|
|
4
4
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
5
5
|
Maybe,
|
|
6
6
|
NodeIntrinsicFunction,
|
|
7
|
+
NodeResource,
|
|
7
8
|
NodeTemplate,
|
|
8
9
|
Nothing,
|
|
9
10
|
is_nothing,
|
|
@@ -165,3 +166,11 @@ class ChangeSetModelValidator(ChangeSetModelPreproc):
|
|
|
165
166
|
return super().visit_node_intrinsic_function_fn_select(node_intrinsic_function)
|
|
166
167
|
except RuntimeError:
|
|
167
168
|
return self.visit(node_intrinsic_function.arguments)
|
|
169
|
+
|
|
170
|
+
def visit_node_resource(self, node_resource: NodeResource) -> PreprocEntityDelta:
|
|
171
|
+
try:
|
|
172
|
+
if delta := super().visit_node_resource(node_resource):
|
|
173
|
+
return delta
|
|
174
|
+
return super().visit_node_properties(node_resource.properties)
|
|
175
|
+
except RuntimeError:
|
|
176
|
+
return super().visit_node_properties(node_resource.properties)
|
|
@@ -9,6 +9,7 @@ from localstack.aws.api.cloudformation import (
|
|
|
9
9
|
CreateStackInput,
|
|
10
10
|
CreateStackSetInput,
|
|
11
11
|
ExecutionStatus,
|
|
12
|
+
Output,
|
|
12
13
|
ResourceStatus,
|
|
13
14
|
StackEvent,
|
|
14
15
|
StackInstanceComprehensiveStatus,
|
|
@@ -51,9 +52,9 @@ class Stack:
|
|
|
51
52
|
template_body: str | None
|
|
52
53
|
|
|
53
54
|
# state after deploy
|
|
54
|
-
resolved_parameters: dict[str,
|
|
55
|
+
resolved_parameters: dict[str, EngineParameter]
|
|
55
56
|
resolved_resources: dict[str, ResolvedResource]
|
|
56
|
-
resolved_outputs:
|
|
57
|
+
resolved_outputs: list[Output]
|
|
57
58
|
resource_states: dict[str, StackResource]
|
|
58
59
|
resolved_exports: dict[str, str]
|
|
59
60
|
|
|
@@ -94,7 +95,7 @@ class Stack:
|
|
|
94
95
|
# state after deploy
|
|
95
96
|
self.resolved_parameters = {}
|
|
96
97
|
self.resolved_resources = {}
|
|
97
|
-
self.resolved_outputs =
|
|
98
|
+
self.resolved_outputs = []
|
|
98
99
|
self.resource_states = {}
|
|
99
100
|
self.events = []
|
|
100
101
|
self.resolved_exports = {}
|
|
@@ -52,6 +52,7 @@ from localstack.aws.api.cloudformation import (
|
|
|
52
52
|
NextToken,
|
|
53
53
|
Parameter,
|
|
54
54
|
PhysicalResourceId,
|
|
55
|
+
ResourceStatus,
|
|
55
56
|
RetainExceptOnCreate,
|
|
56
57
|
RetainResources,
|
|
57
58
|
RoleARN,
|
|
@@ -349,6 +350,7 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
349
350
|
# the transformations.
|
|
350
351
|
update_model.before_runtime_cache.update(raw_update_model.before_runtime_cache)
|
|
351
352
|
update_model.after_runtime_cache.update(raw_update_model.after_runtime_cache)
|
|
353
|
+
change_set.set_update_model(update_model)
|
|
352
354
|
|
|
353
355
|
# perform validations
|
|
354
356
|
validator = ChangeSetModelValidator(
|
|
@@ -361,7 +363,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
361
363
|
if transform.global_transforms:
|
|
362
364
|
# global transforms should always be considered "MODIFIED"
|
|
363
365
|
update_model.node_template.change_type = ChangeType.MODIFIED
|
|
364
|
-
change_set.set_update_model(update_model)
|
|
365
366
|
change_set.processed_template = transformed_after_template
|
|
366
367
|
|
|
367
368
|
@handler("CreateChangeSet", expand=False)
|
|
@@ -557,15 +558,15 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
557
558
|
)
|
|
558
559
|
|
|
559
560
|
def _run(*args):
|
|
560
|
-
|
|
561
|
-
|
|
561
|
+
result = change_set_executor.execute()
|
|
562
|
+
change_set.stack.resolved_parameters = change_set.resolved_parameters
|
|
563
|
+
change_set.stack.resolved_resources = result.resources
|
|
564
|
+
if not result.failure_message:
|
|
562
565
|
new_stack_status = StackStatus.UPDATE_COMPLETE
|
|
563
566
|
if change_set.change_set_type == ChangeSetType.CREATE:
|
|
564
567
|
new_stack_status = StackStatus.CREATE_COMPLETE
|
|
565
568
|
change_set.stack.set_stack_status(new_stack_status)
|
|
566
569
|
change_set.set_execution_status(ExecutionStatus.EXECUTE_COMPLETE)
|
|
567
|
-
change_set.stack.resolved_resources = result.resources
|
|
568
|
-
change_set.stack.resolved_parameters = change_set.resolved_parameters
|
|
569
570
|
change_set.stack.resolved_outputs = result.outputs
|
|
570
571
|
|
|
571
572
|
change_set.stack.resolved_exports = {}
|
|
@@ -582,20 +583,15 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
582
583
|
change_set.stack.description = change_set.template.get("Description")
|
|
583
584
|
change_set.stack.processed_template = change_set.processed_template
|
|
584
585
|
change_set.stack.template_body = change_set.template_body
|
|
585
|
-
|
|
586
|
+
else:
|
|
586
587
|
LOG.error(
|
|
587
588
|
"Execute change set failed: %s",
|
|
588
|
-
|
|
589
|
+
result.failure_message,
|
|
589
590
|
exc_info=LOG.isEnabledFor(logging.DEBUG) and config.CFN_VERBOSE_ERRORS,
|
|
590
591
|
)
|
|
591
|
-
|
|
592
|
-
if change_set.change_set_type == ChangeSetType.CREATE:
|
|
593
|
-
new_stack_status = StackStatus.CREATE_FAILED
|
|
594
|
-
|
|
595
|
-
change_set.stack.set_stack_status(new_stack_status)
|
|
592
|
+
# stack status is taken care of in the executor
|
|
596
593
|
change_set.set_execution_status(ExecutionStatus.EXECUTE_FAILED)
|
|
597
|
-
change_set.stack.
|
|
598
|
-
change_set.stack.change_set_ids.append(change_set.change_set_id)
|
|
594
|
+
change_set.stack.deletion_time = datetime.now(tz=UTC)
|
|
599
595
|
|
|
600
596
|
start_worker_thread(_run)
|
|
601
597
|
|
|
@@ -787,6 +783,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
787
783
|
if change_set.status == ChangeSetStatus.FAILED:
|
|
788
784
|
return CreateStackOutput(StackId=stack.stack_id)
|
|
789
785
|
|
|
786
|
+
stack.processed_template = change_set.processed_template
|
|
787
|
+
|
|
790
788
|
# deployment process
|
|
791
789
|
stack.set_stack_status(StackStatus.CREATE_IN_PROGRESS)
|
|
792
790
|
change_set_executor = ChangeSetModelExecutor(change_set)
|
|
@@ -794,9 +792,16 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
794
792
|
def _run(*args):
|
|
795
793
|
try:
|
|
796
794
|
result = change_set_executor.execute()
|
|
797
|
-
stack.set_stack_status(StackStatus.CREATE_COMPLETE)
|
|
798
795
|
stack.resolved_resources = result.resources
|
|
799
796
|
stack.resolved_outputs = result.outputs
|
|
797
|
+
if all(
|
|
798
|
+
resource["ResourceStatus"] == ResourceStatus.CREATE_COMPLETE
|
|
799
|
+
for resource in stack.resolved_resources.values()
|
|
800
|
+
):
|
|
801
|
+
stack.set_stack_status(StackStatus.CREATE_COMPLETE)
|
|
802
|
+
else:
|
|
803
|
+
stack.set_stack_status(StackStatus.CREATE_FAILED)
|
|
804
|
+
|
|
800
805
|
# if the deployment succeeded, update the stack's template representation to that
|
|
801
806
|
# which was just deployed
|
|
802
807
|
stack.template = change_set.template
|
|
@@ -807,7 +812,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
807
812
|
for output in result.outputs:
|
|
808
813
|
if export_name := output.get("ExportName"):
|
|
809
814
|
stack.resolved_exports[export_name] = output["OutputValue"]
|
|
810
|
-
stack.processed_template = change_set.processed_template
|
|
811
815
|
except Exception as e:
|
|
812
816
|
LOG.error(
|
|
813
817
|
"Create Stack set failed: %s",
|
|
@@ -857,7 +861,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
857
861
|
stack_description = ApiStack(
|
|
858
862
|
Description=stack.description,
|
|
859
863
|
CreationTime=stack.creation_time,
|
|
860
|
-
DeletionTime=stack.deletion_time,
|
|
861
864
|
StackId=stack.stack_id,
|
|
862
865
|
StackName=stack.stack_name,
|
|
863
866
|
StackStatus=stack.status,
|
|
@@ -873,6 +876,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
873
876
|
if stack.status != StackStatus.REVIEW_IN_PROGRESS:
|
|
874
877
|
# TODO: actually track updated time
|
|
875
878
|
stack_description["LastUpdatedTime"] = stack.creation_time
|
|
879
|
+
if stack.deletion_time:
|
|
880
|
+
stack_description["DeletionTime"] = stack.deletion_time
|
|
876
881
|
if stack.capabilities:
|
|
877
882
|
stack_description["Capabilities"] = stack.capabilities
|
|
878
883
|
# TODO: confirm the logic for this
|
|
@@ -1489,6 +1494,8 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
1489
1494
|
stack.deletion_time = datetime.now(tz=UTC)
|
|
1490
1495
|
return
|
|
1491
1496
|
|
|
1497
|
+
stack.set_stack_status(StackStatus.DELETE_IN_PROGRESS)
|
|
1498
|
+
|
|
1492
1499
|
previous_update_model = None
|
|
1493
1500
|
if stack.change_set_id:
|
|
1494
1501
|
if previous_change_set := find_change_set_v2(state, stack.change_set_id):
|
|
@@ -1511,7 +1518,6 @@ class CloudformationProviderV2(CloudformationProvider):
|
|
|
1511
1518
|
|
|
1512
1519
|
def _run(*args):
|
|
1513
1520
|
try:
|
|
1514
|
-
stack.set_stack_status(StackStatus.DELETE_IN_PROGRESS)
|
|
1515
1521
|
change_set_executor.execute()
|
|
1516
1522
|
stack.set_stack_status(StackStatus.DELETE_COMPLETE)
|
|
1517
1523
|
stack.deletion_time = datetime.now(tz=UTC)
|
|
@@ -28,6 +28,7 @@ class ResolvedResource(TypedDict):
|
|
|
28
28
|
LogicalResourceId: str
|
|
29
29
|
Type: str
|
|
30
30
|
Properties: dict
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
LastUpdatedTimestamp: datetime
|
|
32
|
+
ResourceStatus: NotRequired[ResourceStatus]
|
|
33
|
+
PhysicalResourceId: NotRequired[str]
|
|
34
|
+
ResourceStatusReason: NotRequired[str]
|
|
File without changes
|
localstack/utils/docker_utils.py
CHANGED
|
@@ -9,6 +9,7 @@ from localstack.constants import DEFAULT_VOLUME_DIR, DOCKER_IMAGE_NAME
|
|
|
9
9
|
from localstack.utils.collections import ensure_list
|
|
10
10
|
from localstack.utils.container_utils.container_client import (
|
|
11
11
|
ContainerClient,
|
|
12
|
+
DockerNotAvailable,
|
|
12
13
|
PortMappings,
|
|
13
14
|
VolumeInfo,
|
|
14
15
|
)
|
|
@@ -153,10 +154,14 @@ def container_ports_can_be_bound(
|
|
|
153
154
|
ports=port_mappings,
|
|
154
155
|
remove=True,
|
|
155
156
|
)
|
|
157
|
+
except DockerNotAvailable as e:
|
|
158
|
+
LOG.warning("Cannot perform port check because Docker is not available.")
|
|
159
|
+
raise e
|
|
156
160
|
except Exception as e:
|
|
157
161
|
if "port is already allocated" not in str(e) and "address already in use" not in str(e):
|
|
158
162
|
LOG.warning(
|
|
159
|
-
"Unexpected error when attempting to determine container port status",
|
|
163
|
+
"Unexpected error when attempting to determine container port status",
|
|
164
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
160
165
|
)
|
|
161
166
|
return False
|
|
162
167
|
# TODO(srw): sometimes the command output from the docker container is "None", particularly when this function is
|
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.dev82'
|
|
32
|
+
__version_tuple__ = version_tuple = (4, 7, 1, 'dev82')
|
|
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=B8fghWNrftW5YuX3tftIppc__e3D27BeF1P_Etbf1UI,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,12 +311,12 @@ 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=wjU1keXKFvIc-23xEXIioe7ejKFHcuIV5QyzKac7JMA,67286
|
|
315
315
|
localstack/services/cloudformation/engine/v2/change_set_model_describer.py,sha256=caQJ9reGmJ2EsJ2-bDVC30hLQQilXyBAsI7bJd2TYgI,11299
|
|
316
|
-
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=
|
|
317
|
-
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=
|
|
318
|
-
localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=
|
|
319
|
-
localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=
|
|
316
|
+
localstack/services/cloudformation/engine/v2/change_set_model_executor.py,sha256=OTadK7kOtGdcqvlZNjZUz5LyQeOKmvDiWorUE9hoCCU,29328
|
|
317
|
+
localstack/services/cloudformation/engine/v2/change_set_model_preproc.py,sha256=U7reKuxX6Qzd57xrdUyXPa5QXrL0HqawyM1JM4GofNo,53366
|
|
318
|
+
localstack/services/cloudformation/engine/v2/change_set_model_transform.py,sha256=M8td7akrqBI-8nLHfvS3g6bA3hppiDEICBiX_Yg2il8,22769
|
|
319
|
+
localstack/services/cloudformation/engine/v2/change_set_model_validator.py,sha256=ZRQ_AaIPX_sE40Ggx-JmJW0V1mIe09cKEVDsZTr30J8,7952
|
|
320
320
|
localstack/services/cloudformation/engine/v2/change_set_model_visitor.py,sha256=ygUVPgM3b8SAXLLhLeGSD2k_Oo81ukFkug6bcmvRSJg,7843
|
|
321
321
|
localstack/services/cloudformation/engine/v2/resolving.py,sha256=ot76GycQsw6Y9SvxB8sAlK7tRntJb5CTrKYqyEnfiHc,4002
|
|
322
322
|
localstack/services/cloudformation/models/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
|
|
@@ -336,9 +336,9 @@ localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcon
|
|
|
336
336
|
localstack/services/cloudformation/scaffolding/__main__.py,sha256=W4qA6eMNejKWLEhYL340DZEE2D9Bdkcl0Jmp0C7VnWc,30964
|
|
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=
|
|
341
|
-
localstack/services/cloudformation/v2/types.py,sha256=
|
|
339
|
+
localstack/services/cloudformation/v2/entities.py,sha256=JLL9oX15cxzY_U23sa0zySyzx20rEXpIUl9CuQMnCGw,9023
|
|
340
|
+
localstack/services/cloudformation/v2/provider.py,sha256=WLhidQkP8awrDItcXtu3aw1Opeq8SCsrkSFjmP_FnR4,63825
|
|
341
|
+
localstack/services/cloudformation/v2/types.py,sha256=x_oDGQwxkViQ1fpcaSbBWiCODHZJAQgCej45EN-YZDs,957
|
|
342
342
|
localstack/services/cloudformation/v2/utils.py,sha256=xy4Lcp4X8XGJ0OKfnsE7pnfMcFrtIH0Chw35qwjhZuw,148
|
|
343
343
|
localstack/services/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
344
344
|
localstack/services/cloudwatch/alarm_scheduler.py,sha256=HPzQgZvDVXIXaEkjJ39L-jBwlOi_-ZlAyJ3D_suWngk,15761
|
|
@@ -1185,6 +1185,7 @@ localstack/testing/pytest/util.py,sha256=TQAAb_Cj5gTSX0VkenAbSabvyCkl7THxEj70PrT
|
|
|
1185
1185
|
localstack/testing/pytest/validation_tracking.py,sha256=x19q7qCJWBOZRP5fuHTrljSce5DooZVznK93x-ULAHE,5619
|
|
1186
1186
|
localstack/testing/pytest/cloudformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1187
1187
|
localstack/testing/pytest/cloudformation/fixtures.py,sha256=cXGN83wB-yP2mASQSYe8P7cebwdj9S8cONC3nIDBqOw,10534
|
|
1188
|
+
localstack/testing/pytest/cloudformation/transformers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1188
1189
|
localstack/testing/pytest/stepfunctions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1189
1190
|
localstack/testing/pytest/stepfunctions/fixtures.py,sha256=sF3kLQ6EQP2r-ecZO2O2THoTt9BVQyyVidj-8sw7J7Q,32801
|
|
1190
1191
|
localstack/testing/pytest/stepfunctions/utils.py,sha256=jVyEilUC7sGONAR339ZWKaikteBxjbRKPDFNlPZ_8fg,32792
|
|
@@ -1218,7 +1219,7 @@ localstack/utils/container_networking.py,sha256=AUfBhDddnNiAWwmeN6d-k0YeoQAMv9lh
|
|
|
1218
1219
|
localstack/utils/coverage_docs.py,sha256=Suz07XICh3VIJN1gYLRpIwwdYv-wuK22_mK75VJ0cCA,908
|
|
1219
1220
|
localstack/utils/crypto.py,sha256=pQCdhjZNuoMtJYpB_DNPnwqfBsMavBtZ9V8CkcnJRwE,7266
|
|
1220
1221
|
localstack/utils/diagnose.py,sha256=46nu0KAS3VSBTKqdPtQmzPA3zbEGkJgovwfEgoflzFA,4723
|
|
1221
|
-
localstack/utils/docker_utils.py,sha256=
|
|
1222
|
+
localstack/utils/docker_utils.py,sha256=2_In4V8C8qZHX6DvGBpen5aIJy62yw3-YPNOqrjyiDQ,9834
|
|
1222
1223
|
localstack/utils/event_matcher.py,sha256=_DtCZI0ba4Zcit_-TwCUSIG_NXiYgIjmWbuKuMrsZkk,2024
|
|
1223
1224
|
localstack/utils/files.py,sha256=5fdQLiLzh2ovwDfjr-K80IaPojzghPHhu4E4jxlsb0Q,9545
|
|
1224
1225
|
localstack/utils/functions.py,sha256=02gBo3o4cii3W5jztgbn7DN9OjipG3DydjU1DVffJlU,2968
|
|
@@ -1287,13 +1288,13 @@ localstack/utils/server/tcp_proxy.py,sha256=rR6d5jR0ozDvIlpHiqW0cfyY9a2fRGdOzyA8
|
|
|
1287
1288
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1288
1289
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
|
1289
1290
|
localstack/utils/xray/traceid.py,sha256=SQSsMV2rhbTNK6ceIoozZYuGU7Fg687EXcgqxoDl1Fw,1106
|
|
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.
|
|
1298
|
-
localstack_core-4.7.1.
|
|
1299
|
-
localstack_core-4.7.1.
|
|
1291
|
+
localstack_core-4.7.1.dev82.data/scripts/localstack,sha256=WyL11vp5CkuP79iIR-L8XT7Cj8nvmxX7XRAgxhbmXNE,529
|
|
1292
|
+
localstack_core-4.7.1.dev82.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
|
1293
|
+
localstack_core-4.7.1.dev82.data/scripts/localstack.bat,sha256=tlzZTXtveHkMX_s_fa7VDfvdNdS8iVpEz2ER3uk9B_c,29
|
|
1294
|
+
localstack_core-4.7.1.dev82.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
|
1295
|
+
localstack_core-4.7.1.dev82.dist-info/METADATA,sha256=d6-4t712l0a-5RgJM2sjT3LGPWu0T0ycRpjHDIgmtU4,5569
|
|
1296
|
+
localstack_core-4.7.1.dev82.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1297
|
+
localstack_core-4.7.1.dev82.dist-info/entry_points.txt,sha256=QVR0SdbvA7isjrtgvO1C8_mZAnD7DIRNsjCtZ-ddbIs,20771
|
|
1298
|
+
localstack_core-4.7.1.dev82.dist-info/plux.json,sha256=5nTYe3w6sN-XcocFbUrqCYoZ96uJlphQq1NVkbP7iag,20995
|
|
1299
|
+
localstack_core-4.7.1.dev82.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
|
1300
|
+
localstack_core-4.7.1.dev82.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"localstack.cloudformation.resource_providers": ["AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Lambda::EventSourceMapping=localstack.services.lambda_.resource_providers.aws_lambda_eventsourcemapping_plugin:LambdaEventSourceMappingProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::SNS::TopicPolicy=localstack.services.sns.resource_providers.aws_sns_topicpolicy_plugin:SNSTopicPolicyProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::Logs::SubscriptionFilter=localstack.services.logs.resource_providers.aws_logs_subscriptionfilter_plugin:LogsSubscriptionFilterProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "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::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::CloudFormation::WaitConditionHandle=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitconditionhandle_plugin:CloudFormationWaitConditionHandleProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin"], "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.packages": ["kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_package", "vosk/community=localstack.services.transcribe.plugins:vosk_package", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "dynamodb-local/community=localstack.services.dynamodb.plugins:dynamodb_local_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "lambda-java-libs/community=localstack.services.lambda_.plugins:lambda_java_libs", "lambda-runtime/community=localstack.services.lambda_.plugins:lambda_runtime_package"], "localstack.hooks.on_infra_start": ["_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", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "eager_load_services=localstack.services.plugins:eager_load_services", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "register_cloudformation_deploy_ui=localstack.services.cloudformation.plugins:register_cloudformation_deploy_ui", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "setup_dns_configuration_on_host=localstack.dns.plugins:setup_dns_configuration_on_host", "start_dns_server=localstack.dns.plugins:start_dns_server", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "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"], "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", "stop_server=localstack.dns.plugins:stop_server", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown"], "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.hooks.on_infra_ready": ["publish_provider_assignment=localstack.utils.analytics.service_providers:publish_provider_assignment", "_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"localstack.hooks.on_infra_ready": ["publish_provider_assignment=localstack.utils.analytics.service_providers:publish_provider_assignment", "_run_init_scripts_on_ready=localstack.runtime.init:_run_init_scripts_on_ready"], "localstack.cloudformation.resource_providers": ["AWS::KMS::Key=localstack.services.kms.resource_providers.aws_kms_key_plugin:KMSKeyProviderPlugin", "AWS::ECR::Repository=localstack.services.ecr.resource_providers.aws_ecr_repository_plugin:ECRRepositoryProviderPlugin", "AWS::CloudFormation::Stack=localstack.services.cloudformation.resource_providers.aws_cloudformation_stack_plugin:CloudFormationStackProviderPlugin", "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::MaintenanceWindow=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindow_plugin:SSMMaintenanceWindowProviderPlugin", "AWS::SSM::Parameter=localstack.services.ssm.resource_providers.aws_ssm_parameter_plugin:SSMParameterProviderPlugin", "AWS::IAM::ServiceLinkedRole=localstack.services.iam.resource_providers.aws_iam_servicelinkedrole_plugin:IAMServiceLinkedRoleProviderPlugin", "AWS::Scheduler::Schedule=localstack.services.scheduler.resource_providers.aws_scheduler_schedule_plugin:SchedulerScheduleProviderPlugin", "AWS::EC2::VPCGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_vpcgatewayattachment_plugin:EC2VPCGatewayAttachmentProviderPlugin", "AWS::ApiGateway::BasePathMapping=localstack.services.apigateway.resource_providers.aws_apigateway_basepathmapping_plugin:ApiGatewayBasePathMappingProviderPlugin", "AWS::Events::Rule=localstack.services.events.resource_providers.aws_events_rule_plugin:EventsRuleProviderPlugin", "AWS::Lambda::Permission=localstack.services.lambda_.resource_providers.aws_lambda_permission_plugin:LambdaPermissionProviderPlugin", "AWS::ApiGateway::Account=localstack.services.apigateway.resource_providers.aws_apigateway_account_plugin:ApiGatewayAccountProviderPlugin", "AWS::Route53::RecordSet=localstack.services.route53.resource_providers.aws_route53_recordset_plugin:Route53RecordSetProviderPlugin", "AWS::SecretsManager::RotationSchedule=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_rotationschedule_plugin:SecretsManagerRotationScheduleProviderPlugin", "AWS::SecretsManager::Secret=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secret_plugin:SecretsManagerSecretProviderPlugin", "AWS::EC2::DHCPOptions=localstack.services.ec2.resource_providers.aws_ec2_dhcpoptions_plugin:EC2DHCPOptionsProviderPlugin", "AWS::IAM::InstanceProfile=localstack.services.iam.resource_providers.aws_iam_instanceprofile_plugin:IAMInstanceProfileProviderPlugin", "AWS::CloudWatch::CompositeAlarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_compositealarm_plugin:CloudWatchCompositeAlarmProviderPlugin", "AWS::ApiGateway::Resource=localstack.services.apigateway.resource_providers.aws_apigateway_resource_plugin:ApiGatewayResourceProviderPlugin", "AWS::Lambda::Alias=localstack.services.lambda_.resource_providers.lambda_alias_plugin:LambdaAliasProviderPlugin", "AWS::Events::EventBus=localstack.services.events.resource_providers.aws_events_eventbus_plugin:EventsEventBusProviderPlugin", "AWS::ApiGateway::Method=localstack.services.apigateway.resource_providers.aws_apigateway_method_plugin:ApiGatewayMethodProviderPlugin", "AWS::CloudFormation::Macro=localstack.services.cloudformation.resource_providers.aws_cloudformation_macro_plugin:CloudFormationMacroProviderPlugin", "AWS::EC2::VPC=localstack.services.ec2.resource_providers.aws_ec2_vpc_plugin:EC2VPCProviderPlugin", "AWS::DynamoDB::GlobalTable=localstack.services.dynamodb.resource_providers.aws_dynamodb_globaltable_plugin:DynamoDBGlobalTableProviderPlugin", "AWS::IAM::Policy=localstack.services.iam.resource_providers.aws_iam_policy_plugin:IAMPolicyProviderPlugin", "AWS::ApiGateway::Deployment=localstack.services.apigateway.resource_providers.aws_apigateway_deployment_plugin:ApiGatewayDeploymentProviderPlugin", "AWS::EC2::TransitGatewayAttachment=localstack.services.ec2.resource_providers.aws_ec2_transitgatewayattachment_plugin:EC2TransitGatewayAttachmentProviderPlugin", "AWS::EC2::KeyPair=localstack.services.ec2.resource_providers.aws_ec2_keypair_plugin:EC2KeyPairProviderPlugin", "AWS::IAM::User=localstack.services.iam.resource_providers.aws_iam_user_plugin:IAMUserProviderPlugin", "AWS::ApiGateway::Stage=localstack.services.apigateway.resource_providers.aws_apigateway_stage_plugin:ApiGatewayStageProviderPlugin", "AWS::Route53::HealthCheck=localstack.services.route53.resource_providers.aws_route53_healthcheck_plugin:Route53HealthCheckProviderPlugin", "AWS::SSM::PatchBaseline=localstack.services.ssm.resource_providers.aws_ssm_patchbaseline_plugin:SSMPatchBaselineProviderPlugin", "AWS::ApiGateway::GatewayResponse=localstack.services.apigateway.resource_providers.aws_apigateway_gatewayresponse_plugin:ApiGatewayGatewayResponseProviderPlugin", "AWS::CDK::Metadata=localstack.services.cdk.resource_providers.cdk_metadata_plugin:LambdaAliasProviderPlugin", "AWS::IAM::AccessKey=localstack.services.iam.resource_providers.aws_iam_accesskey_plugin:IAMAccessKeyProviderPlugin", "AWS::Events::EventBusPolicy=localstack.services.events.resource_providers.aws_events_eventbuspolicy_plugin:EventsEventBusPolicyProviderPlugin", "AWS::EC2::RouteTable=localstack.services.ec2.resource_providers.aws_ec2_routetable_plugin:EC2RouteTableProviderPlugin", "AWS::EC2::Route=localstack.services.ec2.resource_providers.aws_ec2_route_plugin:EC2RouteProviderPlugin", "AWS::CloudFormation::WaitCondition=localstack.services.cloudformation.resource_providers.aws_cloudformation_waitcondition_plugin:CloudFormationWaitConditionProviderPlugin", "AWS::SSM::MaintenanceWindowTarget=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtarget_plugin:SSMMaintenanceWindowTargetProviderPlugin", "AWS::SNS::Subscription=localstack.services.sns.resource_providers.aws_sns_subscription_plugin:SNSSubscriptionProviderPlugin", "AWS::IAM::ManagedPolicy=localstack.services.iam.resource_providers.aws_iam_managedpolicy_plugin:IAMManagedPolicyProviderPlugin", "AWS::Kinesis::StreamConsumer=localstack.services.kinesis.resource_providers.aws_kinesis_streamconsumer_plugin:KinesisStreamConsumerProviderPlugin", "AWS::EC2::NetworkAcl=localstack.services.ec2.resource_providers.aws_ec2_networkacl_plugin:EC2NetworkAclProviderPlugin", "AWS::S3::BucketPolicy=localstack.services.s3.resource_providers.aws_s3_bucketpolicy_plugin:S3BucketPolicyProviderPlugin", "AWS::ApiGateway::DomainName=localstack.services.apigateway.resource_providers.aws_apigateway_domainname_plugin:ApiGatewayDomainNameProviderPlugin", "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::Lambda::CodeSigningConfig=localstack.services.lambda_.resource_providers.aws_lambda_codesigningconfig_plugin:LambdaCodeSigningConfigProviderPlugin", "AWS::Events::Connection=localstack.services.events.resource_providers.aws_events_connection_plugin:EventsConnectionProviderPlugin", "AWS::SecretsManager::SecretTargetAttachment=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_secrettargetattachment_plugin:SecretsManagerSecretTargetAttachmentProviderPlugin", "AWS::ApiGateway::RestApi=localstack.services.apigateway.resource_providers.aws_apigateway_restapi_plugin:ApiGatewayRestApiProviderPlugin", "AWS::IAM::ServerCertificate=localstack.services.iam.resource_providers.aws_iam_servercertificate_plugin:IAMServerCertificateProviderPlugin", "AWS::ApiGateway::RequestValidator=localstack.services.apigateway.resource_providers.aws_apigateway_requestvalidator_plugin:ApiGatewayRequestValidatorProviderPlugin", "AWS::SQS::QueuePolicy=localstack.services.sqs.resource_providers.aws_sqs_queuepolicy_plugin:SQSQueuePolicyProviderPlugin", "AWS::StepFunctions::StateMachine=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_statemachine_plugin:StepFunctionsStateMachineProviderPlugin", "AWS::ApiGateway::ApiKey=localstack.services.apigateway.resource_providers.aws_apigateway_apikey_plugin:ApiGatewayApiKeyProviderPlugin", "AWS::KinesisFirehose::DeliveryStream=localstack.services.kinesisfirehose.resource_providers.aws_kinesisfirehose_deliverystream_plugin:KinesisFirehoseDeliveryStreamProviderPlugin", "AWS::EC2::TransitGateway=localstack.services.ec2.resource_providers.aws_ec2_transitgateway_plugin:EC2TransitGatewayProviderPlugin", "AWS::EC2::Subnet=localstack.services.ec2.resource_providers.aws_ec2_subnet_plugin:EC2SubnetProviderPlugin", "AWS::ResourceGroups::Group=localstack.services.resource_groups.resource_providers.aws_resourcegroups_group_plugin:ResourceGroupsGroupProviderPlugin", "AWS::EC2::SubnetRouteTableAssociation=localstack.services.ec2.resource_providers.aws_ec2_subnetroutetableassociation_plugin:EC2SubnetRouteTableAssociationProviderPlugin", "AWS::ApiGateway::UsagePlanKey=localstack.services.apigateway.resource_providers.aws_apigateway_usageplankey_plugin:ApiGatewayUsagePlanKeyProviderPlugin", "AWS::SES::EmailIdentity=localstack.services.ses.resource_providers.aws_ses_emailidentity_plugin:SESEmailIdentityProviderPlugin", "AWS::EC2::PrefixList=localstack.services.ec2.resource_providers.aws_ec2_prefixlist_plugin:EC2PrefixListProviderPlugin", "AWS::Elasticsearch::Domain=localstack.services.opensearch.resource_providers.aws_elasticsearch_domain_plugin:ElasticsearchDomainProviderPlugin", "AWS::EC2::Instance=localstack.services.ec2.resource_providers.aws_ec2_instance_plugin:EC2InstanceProviderPlugin", "AWS::Lambda::Function=localstack.services.lambda_.resource_providers.aws_lambda_function_plugin:LambdaFunctionProviderPlugin", "AWS::Lambda::LayerVersion=localstack.services.lambda_.resource_providers.aws_lambda_layerversion_plugin:LambdaLayerVersionProviderPlugin", "AWS::IAM::Group=localstack.services.iam.resource_providers.aws_iam_group_plugin:IAMGroupProviderPlugin", "AWS::CloudWatch::Alarm=localstack.services.cloudwatch.resource_providers.aws_cloudwatch_alarm_plugin:CloudWatchAlarmProviderPlugin", "AWS::SSM::MaintenanceWindowTask=localstack.services.ssm.resource_providers.aws_ssm_maintenancewindowtask_plugin:SSMMaintenanceWindowTaskProviderPlugin", "AWS::ApiGateway::Model=localstack.services.apigateway.resource_providers.aws_apigateway_model_plugin:ApiGatewayModelProviderPlugin", "AWS::Lambda::Version=localstack.services.lambda_.resource_providers.aws_lambda_version_plugin:LambdaVersionProviderPlugin", "AWS::Lambda::LayerVersionPermission=localstack.services.lambda_.resource_providers.aws_lambda_layerversionpermission_plugin:LambdaLayerVersionPermissionProviderPlugin", "AWS::S3::Bucket=localstack.services.s3.resource_providers.aws_s3_bucket_plugin:S3BucketProviderPlugin", "AWS::StepFunctions::Activity=localstack.services.stepfunctions.resource_providers.aws_stepfunctions_activity_plugin:StepFunctionsActivityProviderPlugin", "AWS::EC2::NatGateway=localstack.services.ec2.resource_providers.aws_ec2_natgateway_plugin:EC2NatGatewayProviderPlugin", "AWS::CertificateManager::Certificate=localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate_plugin:CertificateManagerCertificateProviderPlugin", "AWS::IAM::Role=localstack.services.iam.resource_providers.aws_iam_role_plugin:IAMRoleProviderPlugin", "AWS::Lambda::Url=localstack.services.lambda_.resource_providers.aws_lambda_url_plugin:LambdaUrlProviderPlugin", "AWS::SNS::Topic=localstack.services.sns.resource_providers.aws_sns_topic_plugin:SNSTopicProviderPlugin", "AWS::DynamoDB::Table=localstack.services.dynamodb.resource_providers.aws_dynamodb_table_plugin:DynamoDBTableProviderPlugin", "AWS::Logs::LogGroup=localstack.services.logs.resource_providers.aws_logs_loggroup_plugin:LogsLogGroupProviderPlugin", "AWS::Kinesis::Stream=localstack.services.kinesis.resource_providers.aws_kinesis_stream_plugin:KinesisStreamProviderPlugin", "AWS::OpenSearchService::Domain=localstack.services.opensearch.resource_providers.aws_opensearchservice_domain_plugin:OpenSearchServiceDomainProviderPlugin", "AWS::Redshift::Cluster=localstack.services.redshift.resource_providers.aws_redshift_cluster_plugin:RedshiftClusterProviderPlugin", "AWS::ApiGateway::UsagePlan=localstack.services.apigateway.resource_providers.aws_apigateway_usageplan_plugin:ApiGatewayUsagePlanProviderPlugin", "AWS::KMS::Alias=localstack.services.kms.resource_providers.aws_kms_alias_plugin:KMSAliasProviderPlugin", "AWS::EC2::InternetGateway=localstack.services.ec2.resource_providers.aws_ec2_internetgateway_plugin:EC2InternetGatewayProviderPlugin", "AWS::EC2::VPCEndpoint=localstack.services.ec2.resource_providers.aws_ec2_vpcendpoint_plugin:EC2VPCEndpointProviderPlugin", "AWS::Logs::LogStream=localstack.services.logs.resource_providers.aws_logs_logstream_plugin:LogsLogStreamProviderPlugin", "AWS::Scheduler::ScheduleGroup=localstack.services.scheduler.resource_providers.aws_scheduler_schedulegroup_plugin:SchedulerScheduleGroupProviderPlugin", "AWS::Events::ApiDestination=localstack.services.events.resource_providers.aws_events_apidestination_plugin:EventsApiDestinationProviderPlugin", "AWS::EC2::SecurityGroup=localstack.services.ec2.resource_providers.aws_ec2_securitygroup_plugin:EC2SecurityGroupProviderPlugin", "AWS::SecretsManager::ResourcePolicy=localstack.services.secretsmanager.resource_providers.aws_secretsmanager_resourcepolicy_plugin:SecretsManagerResourcePolicyProviderPlugin", "AWS::Lambda::EventInvokeConfig=localstack.services.lambda_.resource_providers.aws_lambda_eventinvokeconfig_plugin:LambdaEventInvokeConfigProviderPlugin", "AWS::SQS::Queue=localstack.services.sqs.resource_providers.aws_sqs_queue_plugin:SQSQueueProviderPlugin"], "localstack.hooks.on_infra_start": ["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", "_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", "_publish_config_as_analytics_event=localstack.runtime.analytics:_publish_config_as_analytics_event", "_publish_container_info=localstack.runtime.analytics:_publish_container_info", "apply_aws_runtime_patches=localstack.aws.patches:apply_aws_runtime_patches", "_run_init_scripts_on_start=localstack.runtime.init:_run_init_scripts_on_start", "delete_cached_certificate=localstack.plugins:delete_cached_certificate", "deprecation_warnings=localstack.plugins:deprecation_warnings", "register_custom_endpoints=localstack.services.lambda_.plugins:register_custom_endpoints", "validate_configuration=localstack.services.lambda_.plugins:validate_configuration", "register_swagger_endpoints=localstack.http.resources.swagger.plugins:register_swagger_endpoints", "apply_runtime_patches=localstack.runtime.patches:apply_runtime_patches", "conditionally_enable_debugger=localstack.dev.debugger.plugins:conditionally_enable_debugger", "init_response_mutation_handler=localstack.aws.handlers.response:init_response_mutation_handler", "eager_load_services=localstack.services.plugins:eager_load_services"], "localstack.runtime.components": ["aws=localstack.aws.components:AwsComponents"], "localstack.hooks.on_infra_shutdown": ["stop_server=localstack.dns.plugins:stop_server", "_run_init_scripts_on_shutdown=localstack.runtime.init:_run_init_scripts_on_shutdown", "remove_custom_endpoints=localstack.services.lambda_.plugins:remove_custom_endpoints", "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"], "localstack.packages": ["opensearch/community=localstack.services.opensearch.plugins:opensearch_package", "elasticsearch/community=localstack.services.es.plugins:elasticsearch_package", "ffmpeg/community=localstack.packages.plugins:ffmpeg_package", "java/community=localstack.packages.plugins:java_package", "terraform/community=localstack.packages.plugins:terraform_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", "jpype-jsonata/community=localstack.services.stepfunctions.plugins:jpype_jsonata_package", "kinesis-mock/community=localstack.services.kinesis.plugins:kinesismock_package"], "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.init.runner": ["py=localstack.runtime.init:PythonScriptRunner", "sh=localstack.runtime.init:ShellScriptRunner"], "localstack.openapi.spec": ["localstack=localstack.plugins:CoreOASPlugin"], "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.runtime.server": ["hypercorn=localstack.runtime.server.plugins:HypercornRuntimeServerPlugin", "twisted=localstack.runtime.server.plugins:TwistedRuntimeServerPlugin"]}
|
|
File without changes
|
{localstack_core-4.7.1.dev79.data → localstack_core-4.7.1.dev82.data}/scripts/localstack-supervisor
RENAMED
|
File without changes
|
{localstack_core-4.7.1.dev79.data → localstack_core-4.7.1.dev82.data}/scripts/localstack.bat
RENAMED
|
File without changes
|
|
File without changes
|
{localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/licenses/LICENSE.txt
RENAMED
|
File without changes
|
{localstack_core-4.7.1.dev79.dist-info → localstack_core-4.7.1.dev82.dist-info}/top_level.txt
RENAMED
|
File without changes
|