localstack-core 4.7.1.dev49__py3-none-any.whl → 4.10.1.dev12__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.
- localstack/aws/api/cloudformation/__init__.py +18 -4
- localstack/aws/api/cloudwatch/__init__.py +41 -1
- localstack/aws/api/config/__init__.py +4 -0
- localstack/aws/api/core.py +6 -2
- localstack/aws/api/dynamodb/__init__.py +30 -0
- localstack/aws/api/ec2/__init__.py +1522 -65
- localstack/aws/api/iam/__init__.py +7 -0
- localstack/aws/api/kinesis/__init__.py +19 -0
- localstack/aws/api/kms/__init__.py +6 -0
- localstack/aws/api/lambda_/__init__.py +13 -0
- localstack/aws/api/logs/__init__.py +15 -0
- localstack/aws/api/redshift/__init__.py +9 -3
- localstack/aws/api/route53/__init__.py +5 -0
- localstack/aws/api/s3/__init__.py +12 -0
- localstack/aws/api/s3control/__init__.py +54 -0
- localstack/aws/api/ssm/__init__.py +2 -0
- localstack/aws/api/transcribe/__init__.py +17 -0
- localstack/aws/client.py +7 -2
- localstack/aws/forwarder.py +52 -5
- localstack/aws/handlers/analytics.py +1 -1
- localstack/aws/handlers/internal_requests.py +6 -1
- localstack/aws/handlers/logging.py +12 -2
- localstack/aws/handlers/metric_handler.py +41 -1
- localstack/aws/handlers/service.py +40 -20
- localstack/aws/mocking.py +2 -2
- localstack/aws/patches.py +2 -2
- localstack/aws/protocol/parser.py +459 -32
- localstack/aws/protocol/serializer.py +689 -69
- localstack/aws/protocol/service_router.py +120 -20
- localstack/aws/protocol/validate.py +1 -1
- localstack/aws/scaffold.py +1 -1
- localstack/aws/skeleton.py +4 -2
- localstack/aws/spec-patches.json +58 -0
- localstack/aws/spec.py +37 -16
- localstack/cli/exceptions.py +1 -1
- localstack/cli/localstack.py +6 -6
- localstack/cli/lpm.py +3 -4
- localstack/cli/plugins.py +1 -1
- localstack/cli/profiles.py +1 -2
- localstack/config.py +25 -18
- localstack/constants.py +4 -29
- localstack/dev/kubernetes/__main__.py +130 -7
- localstack/dev/run/configurators.py +1 -4
- localstack/dev/run/paths.py +1 -1
- localstack/dns/plugins.py +5 -1
- localstack/dns/server.py +13 -4
- localstack/logging/format.py +3 -3
- localstack/packages/api.py +9 -8
- localstack/packages/core.py +2 -2
- localstack/packages/plugins.py +0 -8
- localstack/runtime/analytics.py +3 -0
- localstack/runtime/hooks.py +1 -1
- localstack/runtime/init.py +2 -2
- localstack/runtime/main.py +5 -5
- localstack/runtime/patches.py +2 -2
- localstack/services/apigateway/helpers.py +1 -4
- localstack/services/apigateway/legacy/helpers.py +7 -8
- localstack/services/apigateway/legacy/integration.py +4 -3
- localstack/services/apigateway/legacy/invocations.py +6 -5
- localstack/services/apigateway/legacy/provider.py +148 -68
- localstack/services/apigateway/legacy/templates.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py +7 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +3 -0
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +3 -3
- localstack/services/apigateway/next_gen/execute_api/template_mapping.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/test_invoke.py +114 -9
- localstack/services/apigateway/next_gen/provider.py +5 -0
- localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +1 -1
- localstack/services/cloudformation/api_utils.py +4 -8
- localstack/services/cloudformation/cfn_utils.py +1 -1
- localstack/services/cloudformation/engine/entities.py +14 -4
- localstack/services/cloudformation/engine/template_deployer.py +6 -4
- localstack/services/cloudformation/engine/transformers.py +6 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +201 -13
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +52 -3
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +117 -76
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +205 -52
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +350 -116
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +56 -14
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +1 -0
- localstack/services/cloudformation/engine/v2/resolving.py +7 -5
- localstack/services/cloudformation/engine/yaml_parser.py +9 -2
- localstack/services/cloudformation/provider.py +7 -5
- localstack/services/cloudformation/resource_provider.py +7 -1
- localstack/services/cloudformation/resources.py +24149 -0
- localstack/services/cloudformation/service_models.py +2 -2
- localstack/services/cloudformation/v2/entities.py +19 -9
- localstack/services/cloudformation/v2/provider.py +336 -106
- localstack/services/cloudformation/v2/types.py +13 -7
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/cloudwatch/alarm_scheduler.py +4 -1
- localstack/services/cloudwatch/provider.py +18 -13
- localstack/services/cloudwatch/provider_v2.py +25 -28
- localstack/services/dynamodb/packages.py +2 -1
- localstack/services/dynamodb/provider.py +42 -0
- localstack/services/dynamodb/server.py +2 -2
- localstack/services/dynamodb/v2/provider.py +42 -0
- localstack/services/ecr/resource_providers/aws_ecr_repository.py +5 -2
- localstack/services/edge.py +1 -1
- localstack/services/es/provider.py +2 -2
- localstack/services/events/event_rule_engine.py +31 -13
- localstack/services/events/models.py +4 -5
- localstack/services/events/provider.py +17 -14
- localstack/services/events/target.py +17 -9
- localstack/services/events/v1/provider.py +5 -5
- localstack/services/firehose/provider.py +14 -4
- localstack/services/iam/provider.py +11 -116
- localstack/services/iam/resources/policy_simulator.py +133 -0
- localstack/services/kinesis/models.py +15 -2
- localstack/services/kinesis/provider.py +86 -3
- localstack/services/kms/provider.py +14 -5
- localstack/services/lambda_/api_utils.py +6 -3
- localstack/services/lambda_/invocation/docker_runtime_executor.py +1 -1
- localstack/services/lambda_/invocation/event_manager.py +1 -1
- localstack/services/lambda_/invocation/internal_sqs_queue.py +5 -9
- localstack/services/lambda_/invocation/lambda_models.py +10 -7
- localstack/services/lambda_/invocation/lambda_service.py +5 -1
- localstack/services/lambda_/packages.py +1 -1
- localstack/services/lambda_/provider.py +4 -3
- localstack/services/lambda_/provider_utils.py +1 -1
- localstack/services/logs/provider.py +36 -19
- localstack/services/moto.py +2 -1
- localstack/services/opensearch/cluster.py +15 -7
- localstack/services/opensearch/packages.py +26 -7
- localstack/services/opensearch/provider.py +8 -2
- localstack/services/opensearch/versions.py +56 -7
- localstack/services/plugins.py +11 -7
- localstack/services/providers.py +10 -2
- localstack/services/redshift/provider.py +0 -21
- localstack/services/s3/constants.py +5 -2
- localstack/services/s3/cors.py +4 -4
- localstack/services/s3/models.py +1 -1
- localstack/services/s3/notifications.py +55 -39
- localstack/services/s3/presigned_url.py +35 -54
- localstack/services/s3/provider.py +73 -15
- localstack/services/s3/utils.py +42 -22
- localstack/services/s3/validation.py +46 -32
- localstack/services/s3/website_hosting.py +4 -2
- localstack/services/ses/provider.py +18 -8
- localstack/services/sns/constants.py +7 -1
- localstack/services/sns/executor.py +9 -2
- localstack/services/sns/provider.py +8 -5
- localstack/services/sns/publisher.py +31 -16
- localstack/services/sns/v2/models.py +167 -0
- localstack/services/sns/v2/provider.py +867 -0
- localstack/services/sns/v2/utils.py +130 -0
- localstack/services/sqs/constants.py +1 -1
- localstack/services/sqs/developer_api.py +205 -0
- localstack/services/sqs/models.py +48 -5
- localstack/services/sqs/provider.py +38 -311
- localstack/services/sqs/query_api.py +6 -2
- localstack/services/sqs/utils.py +121 -2
- localstack/services/ssm/provider.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/comparison.py +5 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_succeed/state_succeed.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/state_wait.py +1 -1
- localstack/services/stepfunctions/asl/eval/environment.py +1 -1
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +1 -1
- localstack/services/stepfunctions/backend/execution.py +2 -1
- localstack/services/stores.py +1 -1
- localstack/services/transcribe/provider.py +6 -1
- localstack/state/codecs.py +61 -0
- localstack/state/core.py +11 -5
- localstack/state/pickle.py +10 -49
- localstack/testing/aws/cloudformation_utils.py +1 -1
- localstack/testing/pytest/cloudformation/fixtures.py +3 -3
- localstack/testing/pytest/cloudformation/transformers.py +0 -0
- localstack/testing/pytest/container.py +4 -5
- localstack/testing/pytest/fixtures.py +33 -31
- localstack/testing/pytest/in_memory_localstack.py +0 -4
- localstack/testing/pytest/marking.py +38 -11
- localstack/testing/pytest/stepfunctions/utils.py +4 -3
- localstack/testing/pytest/util.py +1 -1
- localstack/testing/pytest/validation_tracking.py +1 -2
- localstack/testing/snapshots/transformer_utility.py +6 -1
- localstack/utils/analytics/events.py +2 -2
- localstack/utils/analytics/metadata.py +6 -4
- localstack/utils/analytics/metrics/counter.py +8 -15
- localstack/utils/analytics/publisher.py +1 -2
- localstack/utils/analytics/service_providers.py +19 -0
- localstack/utils/analytics/service_request_aggregator.py +2 -2
- localstack/utils/archives.py +11 -11
- localstack/utils/asyncio.py +2 -2
- localstack/utils/aws/arns.py +24 -29
- localstack/utils/aws/aws_responses.py +8 -8
- localstack/utils/aws/aws_stack.py +2 -3
- localstack/utils/aws/dead_letter_queue.py +1 -5
- localstack/utils/aws/message_forwarding.py +1 -2
- localstack/utils/aws/request_context.py +4 -5
- localstack/utils/aws/resources.py +1 -1
- localstack/utils/aws/templating.py +1 -1
- localstack/utils/batch_policy.py +3 -3
- localstack/utils/bootstrap.py +21 -13
- localstack/utils/catalog/catalog.py +139 -0
- localstack/utils/catalog/catalog_loader.py +119 -0
- localstack/utils/catalog/common.py +58 -0
- localstack/utils/catalog/plugins.py +28 -0
- localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
- localstack/utils/collections.py +7 -8
- localstack/utils/config_listener.py +1 -1
- localstack/utils/container_networking.py +2 -3
- localstack/utils/container_utils/container_client.py +135 -136
- localstack/utils/container_utils/docker_cmd_client.py +85 -69
- localstack/utils/container_utils/docker_sdk_client.py +69 -66
- localstack/utils/crypto.py +10 -10
- localstack/utils/diagnose.py +3 -4
- localstack/utils/docker_utils.py +9 -5
- localstack/utils/files.py +33 -13
- localstack/utils/functions.py +4 -3
- localstack/utils/http.py +11 -11
- localstack/utils/json.py +20 -6
- localstack/utils/kinesis/kinesis_connector.py +2 -1
- localstack/utils/net.py +15 -9
- localstack/utils/no_exit_argument_parser.py +2 -2
- localstack/utils/numbers.py +9 -2
- localstack/utils/objects.py +7 -6
- localstack/utils/patch.py +10 -3
- localstack/utils/run.py +12 -11
- localstack/utils/scheduler.py +11 -11
- localstack/utils/server/tcp_proxy.py +2 -2
- localstack/utils/serving.py +3 -4
- localstack/utils/strings.py +15 -16
- localstack/utils/sync.py +126 -1
- localstack/utils/tagging.py +8 -6
- localstack/utils/testutil.py +8 -8
- localstack/utils/threads.py +2 -2
- localstack/utils/time.py +12 -4
- localstack/utils/urls.py +1 -3
- localstack/utils/xray/traceid.py +1 -1
- localstack/version.py +16 -3
- {localstack_core-4.7.1.dev49.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -14
- {localstack_core-4.7.1.dev49.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +248 -239
- {localstack_core-4.7.1.dev49.dist-info → localstack_core-4.10.1.dev12.dist-info}/entry_points.txt +8 -4
- localstack_core-4.10.1.dev12.dist-info/plux.json +1 -0
- localstack/packages/terraform.py +0 -46
- localstack/services/cloudformation/deploy.html +0 -144
- localstack/services/cloudformation/deploy_ui.py +0 -47
- localstack/services/cloudformation/plugins.py +0 -12
- localstack_core-4.7.1.dev49.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev49.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev49.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev49.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev49.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev49.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev49.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
|
@@ -13,8 +13,8 @@ class DependencyNotYetSatisfied(Exception):
|
|
|
13
13
|
"""Exception indicating that a resource dependency is not (yet) deployed/available."""
|
|
14
14
|
|
|
15
15
|
def __init__(self, resource_ids, message=None):
|
|
16
|
-
message = message or "Unresolved dependencies:
|
|
17
|
-
super(
|
|
16
|
+
message = message or f"Unresolved dependencies: {resource_ids}"
|
|
17
|
+
super().__init__(message)
|
|
18
18
|
resource_ids = resource_ids if isinstance(resource_ids, list) else [resource_ids]
|
|
19
19
|
self.resource_ids = resource_ids
|
|
20
20
|
|
|
@@ -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,
|
|
@@ -18,18 +19,19 @@ from localstack.aws.api.cloudformation import (
|
|
|
18
19
|
StackSetOperation,
|
|
19
20
|
StackStatus,
|
|
20
21
|
StackStatusReason,
|
|
22
|
+
Tag,
|
|
21
23
|
)
|
|
22
24
|
from localstack.aws.api.cloudformation import (
|
|
23
25
|
Parameter as ApiParameter,
|
|
24
26
|
)
|
|
25
27
|
from localstack.services.cloudformation.engine.entities import (
|
|
26
|
-
|
|
28
|
+
StackIdentifierV2,
|
|
27
29
|
)
|
|
28
30
|
from localstack.services.cloudformation.engine.v2.change_set_model import (
|
|
29
31
|
ChangeType,
|
|
30
32
|
UpdateModel,
|
|
31
33
|
)
|
|
32
|
-
from localstack.services.cloudformation.v2.types import ResolvedResource
|
|
34
|
+
from localstack.services.cloudformation.v2.types import EngineParameter, ResolvedResource
|
|
33
35
|
from localstack.utils.aws import arns
|
|
34
36
|
from localstack.utils.strings import long_uid, short_uid
|
|
35
37
|
|
|
@@ -39,6 +41,7 @@ class Stack:
|
|
|
39
41
|
description: str | None
|
|
40
42
|
parameters: list[ApiParameter]
|
|
41
43
|
change_set_id: str | None
|
|
44
|
+
change_set_ids: set[str]
|
|
42
45
|
status: StackStatus
|
|
43
46
|
status_reason: StackStatusReason | None
|
|
44
47
|
stack_id: str
|
|
@@ -47,13 +50,15 @@ class Stack:
|
|
|
47
50
|
events: list[StackEvent]
|
|
48
51
|
capabilities: list[Capability]
|
|
49
52
|
enable_termination_protection: bool
|
|
53
|
+
template: dict | None
|
|
50
54
|
processed_template: dict | None
|
|
51
55
|
template_body: str | None
|
|
56
|
+
tags: list[Tag]
|
|
52
57
|
|
|
53
58
|
# state after deploy
|
|
54
|
-
resolved_parameters: dict[str,
|
|
59
|
+
resolved_parameters: dict[str, EngineParameter]
|
|
55
60
|
resolved_resources: dict[str, ResolvedResource]
|
|
56
|
-
resolved_outputs:
|
|
61
|
+
resolved_outputs: list[Output]
|
|
57
62
|
resource_states: dict[str, StackResource]
|
|
58
63
|
resolved_exports: dict[str, str]
|
|
59
64
|
|
|
@@ -63,24 +68,27 @@ class Stack:
|
|
|
63
68
|
region_name: str,
|
|
64
69
|
request_payload: CreateChangeSetInput | CreateStackInput,
|
|
65
70
|
initial_status: StackStatus = StackStatus.CREATE_IN_PROGRESS,
|
|
71
|
+
tags: list[Tag] | None = None,
|
|
66
72
|
):
|
|
67
73
|
self.account_id = account_id
|
|
68
74
|
self.region_name = region_name
|
|
69
75
|
self.status = initial_status
|
|
70
76
|
self.status_reason = None
|
|
71
|
-
self.change_set_ids =
|
|
77
|
+
self.change_set_ids = set()
|
|
72
78
|
self.creation_time = datetime.now(tz=UTC)
|
|
73
79
|
self.deletion_time = None
|
|
74
80
|
self.change_set_id = None
|
|
75
81
|
self.enable_termination_protection = False
|
|
82
|
+
self.template = None
|
|
76
83
|
self.processed_template = None
|
|
77
84
|
self.template_body = None
|
|
85
|
+
self.tags = tags or []
|
|
78
86
|
|
|
79
87
|
self.stack_name = request_payload["StackName"]
|
|
80
88
|
self.parameters = request_payload.get("Parameters", [])
|
|
81
89
|
self.stack_id = arns.cloudformation_stack_arn(
|
|
82
90
|
self.stack_name,
|
|
83
|
-
stack_id=
|
|
91
|
+
stack_id=StackIdentifierV2(
|
|
84
92
|
account_id=self.account_id, region=self.region_name, stack_name=self.stack_name
|
|
85
93
|
).generate(tags=request_payload.get("Tags")),
|
|
86
94
|
account_id=self.account_id,
|
|
@@ -94,7 +102,7 @@ class Stack:
|
|
|
94
102
|
# state after deploy
|
|
95
103
|
self.resolved_parameters = {}
|
|
96
104
|
self.resolved_resources = {}
|
|
97
|
-
self.resolved_outputs =
|
|
105
|
+
self.resolved_outputs = []
|
|
98
106
|
self.resource_states = {}
|
|
99
107
|
self.events = []
|
|
100
108
|
self.resolved_exports = {}
|
|
@@ -192,8 +200,9 @@ class ChangeSet:
|
|
|
192
200
|
execution_status: ExecutionStatus
|
|
193
201
|
creation_time: datetime
|
|
194
202
|
processed_template: dict | None
|
|
195
|
-
resolved_parameters:
|
|
203
|
+
resolved_parameters: dict[str, EngineParameter]
|
|
196
204
|
description: str | None
|
|
205
|
+
tags: list[Tag]
|
|
197
206
|
|
|
198
207
|
def __init__(
|
|
199
208
|
self,
|
|
@@ -210,7 +219,8 @@ class ChangeSet:
|
|
|
210
219
|
self.execution_status = ExecutionStatus.AVAILABLE
|
|
211
220
|
self.update_model = None
|
|
212
221
|
self.creation_time = datetime.now(tz=UTC)
|
|
213
|
-
self.resolved_parameters =
|
|
222
|
+
self.resolved_parameters = {}
|
|
223
|
+
self.tags = request_payload.get("Tags") or []
|
|
214
224
|
|
|
215
225
|
self.change_set_name = request_payload["ChangeSetName"]
|
|
216
226
|
self.change_set_type = request_payload.get("ChangeSetType", ChangeSetType.UPDATE)
|