localstack-core 4.6.1.dev60__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/apigateway/__init__.py +87 -110
- 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 +8 -5
- localstack/aws/api/dynamodb/__init__.py +30 -0
- localstack/aws/api/ec2/__init__.py +1545 -66
- localstack/aws/api/events/__init__.py +12 -16
- 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 +36 -23
- localstack/aws/api/logs/__init__.py +20 -8
- localstack/aws/api/opensearch/__init__.py +16 -0
- localstack/aws/api/pipes/__init__.py +24 -32
- 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 +56 -0
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/ssm/__init__.py +2 -0
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/api/transcribe/__init__.py +17 -0
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +14 -11
- localstack/aws/connect.py +42 -41
- localstack/aws/forwarder.py +57 -9
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +2 -3
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/internal_requests.py +6 -1
- localstack/aws/handlers/logging.py +13 -4
- localstack/aws/handlers/metric_handler.py +44 -5
- localstack/aws/handlers/service.py +48 -28
- localstack/aws/mocking.py +18 -27
- localstack/aws/patches.py +2 -2
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +475 -49
- localstack/aws/protocol/serializer.py +723 -106
- localstack/aws/protocol/service_router.py +133 -33
- localstack/aws/protocol/validate.py +6 -6
- localstack/aws/scaffold.py +9 -10
- localstack/aws/serving/edge.py +5 -6
- localstack/aws/serving/hypercorn.py +2 -2
- localstack/aws/serving/twisted.py +1 -2
- localstack/aws/serving/werkzeug.py +2 -2
- localstack/aws/skeleton.py +12 -11
- localstack/aws/spec-patches.json +58 -0
- localstack/aws/spec.py +66 -46
- localstack/cli/exceptions.py +1 -1
- localstack/cli/localstack.py +11 -11
- localstack/cli/lpm.py +4 -5
- localstack/cli/plugins.py +1 -1
- localstack/cli/profiles.py +1 -2
- localstack/config.py +44 -30
- localstack/constants.py +4 -29
- localstack/deprecations.py +5 -5
- localstack/dev/kubernetes/__main__.py +130 -7
- localstack/dev/run/__main__.py +5 -5
- localstack/dev/run/configurators.py +1 -4
- localstack/dev/run/paths.py +6 -6
- localstack/dns/models.py +2 -1
- localstack/dns/plugins.py +5 -1
- localstack/dns/server.py +16 -6
- localstack/http/dispatcher.py +1 -2
- localstack/http/response.py +2 -2
- localstack/http/router.py +1 -1
- localstack/http/trace.py +2 -1
- localstack/logging/format.py +6 -6
- localstack/packages/api.py +13 -12
- localstack/packages/core.py +4 -4
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +38 -12
- localstack/packages/plugins.py +0 -8
- localstack/runtime/analytics.py +3 -0
- localstack/runtime/hooks.py +1 -1
- localstack/runtime/init.py +8 -9
- localstack/runtime/main.py +5 -5
- localstack/runtime/patches.py +2 -2
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +7 -10
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +27 -28
- localstack/services/apigateway/legacy/integration.py +11 -10
- localstack/services/apigateway/legacy/invocations.py +6 -5
- localstack/services/apigateway/legacy/provider.py +148 -68
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +6 -6
- localstack/services/apigateway/models.py +16 -16
- localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
- localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
- localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py +7 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +2 -3
- localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +9 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +12 -12
- localstack/services/apigateway/next_gen/execute_api/router.py +31 -0
- 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/execute_api/variables.py +63 -63
- localstack/services/apigateway/next_gen/provider.py +5 -0
- localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
- localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
- localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
- localstack/services/cdk/resource_providers/cdk_metadata.py +4 -3
- localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
- localstack/services/cloudformation/api_utils.py +4 -8
- localstack/services/cloudformation/cfn_utils.py +2 -2
- localstack/services/cloudformation/deployment_utils.py +14 -12
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +27 -17
- localstack/services/cloudformation/engine/parameters.py +4 -4
- localstack/services/cloudformation/engine/template_deployer.py +15 -14
- localstack/services/cloudformation/engine/template_utils.py +34 -12
- localstack/services/cloudformation/engine/transformers.py +11 -8
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +336 -39
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +96 -17
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +289 -136
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +315 -146
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +380 -105
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +183 -0
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +6 -0
- localstack/services/cloudformation/engine/v2/resolving.py +102 -0
- localstack/services/cloudformation/engine/yaml_parser.py +9 -2
- localstack/services/cloudformation/provider.py +11 -6
- localstack/services/cloudformation/provider_utils.py +34 -4
- localstack/services/cloudformation/resource_provider.py +31 -21
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
- localstack/services/cloudformation/resources.py +24149 -0
- localstack/services/cloudformation/scaffolding/__main__.py +13 -12
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/service_models.py +2 -2
- localstack/services/cloudformation/stores.py +33 -22
- localstack/services/cloudformation/v2/entities.py +103 -88
- localstack/services/cloudformation/v2/provider.py +872 -131
- localstack/services/cloudformation/v2/types.py +38 -0
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/cloudwatch/alarm_scheduler.py +11 -8
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +30 -25
- localstack/services/cloudwatch/provider_v2.py +27 -32
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
- localstack/services/dynamodb/packages.py +3 -3
- localstack/services/dynamodb/provider.py +159 -18
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
- localstack/services/dynamodb/server.py +2 -2
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +157 -18
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +26 -5
- localstack/services/ec2/provider.py +3 -3
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
- localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
- localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
- localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +29 -22
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
- localstack/services/ecr/resource_providers/aws_ecr_repository.py +22 -19
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +6 -6
- localstack/services/es/provider.py +21 -21
- localstack/services/events/archive.py +2 -2
- localstack/services/events/connection.py +5 -5
- localstack/services/events/event_bus.py +9 -9
- localstack/services/events/event_rule_engine.py +31 -13
- localstack/services/events/models.py +29 -30
- localstack/services/events/provider.py +29 -26
- localstack/services/events/replay.py +3 -3
- localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
- localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_connection.py +27 -27
- localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
- localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
- localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_rule.py +82 -82
- localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
- localstack/services/events/rule.py +15 -15
- localstack/services/events/target.py +21 -13
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +15 -15
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +25 -16
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +14 -119
- localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
- localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
- localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
- localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
- localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
- localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
- localstack/services/iam/resources/policy_simulator.py +133 -0
- localstack/services/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +17 -5
- localstack/services/kinesis/packages.py +3 -3
- localstack/services/kinesis/provider.py +86 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
- localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
- localstack/services/kms/models.py +21 -18
- localstack/services/kms/provider.py +62 -26
- localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
- localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
- localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
- localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
- localstack/services/kms/utils.py +4 -3
- localstack/services/lambda_/api_utils.py +19 -16
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +4 -7
- localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
- localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
- localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
- localstack/services/lambda_/hooks.py +6 -1
- localstack/services/lambda_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +7 -11
- localstack/services/lambda_/invocation/event_manager.py +1 -1
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +8 -11
- localstack/services/lambda_/invocation/internal_sqs_queue.py +6 -10
- localstack/services/lambda_/invocation/lambda_models.py +33 -30
- localstack/services/lambda_/invocation/lambda_service.py +12 -5
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/invocation/version_manager.py +31 -8
- localstack/services/lambda_/ldm.py +14 -0
- localstack/services/lambda_/packages.py +3 -4
- localstack/services/lambda_/provider.py +9 -26
- localstack/services/lambda_/provider_utils.py +1 -1
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
- localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
- localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_url.py +15 -15
- localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
- localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
- localstack/services/lambda_/runtimes.py +1 -3
- localstack/services/lambda_/urlrouter.py +14 -1
- localstack/services/logs/models.py +1 -3
- localstack/services/logs/provider.py +39 -22
- localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
- localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
- localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
- localstack/services/moto.py +5 -4
- localstack/services/opensearch/cluster.py +28 -20
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +27 -9
- localstack/services/opensearch/provider.py +15 -10
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
- localstack/services/opensearch/versions.py +57 -10
- localstack/services/plugins.py +37 -32
- localstack/services/providers.py +10 -2
- localstack/services/redshift/provider.py +0 -21
- localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
- localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
- localstack/services/route53/models.py +1 -3
- localstack/services/route53/provider.py +1 -2
- localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
- localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
- localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
- localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
- localstack/services/route53resolver/models.py +8 -10
- localstack/services/route53resolver/provider.py +12 -12
- localstack/services/s3/codec.py +2 -2
- localstack/services/s3/constants.py +5 -2
- localstack/services/s3/cors.py +8 -8
- localstack/services/s3/models.py +73 -73
- localstack/services/s3/notifications.py +74 -58
- localstack/services/s3/presigned_url.py +41 -59
- localstack/services/s3/provider.py +86 -29
- localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
- localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
- localstack/services/s3/storage/core.py +4 -3
- localstack/services/s3/storage/ephemeral.py +7 -6
- localstack/services/s3/utils.py +51 -31
- localstack/services/s3/validation.py +47 -33
- localstack/services/s3/website_hosting.py +9 -7
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
- localstack/services/secretsmanager/provider.py +10 -12
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
- localstack/services/ses/models.py +8 -1
- localstack/services/ses/provider.py +128 -55
- localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
- localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
- localstack/services/sns/constants.py +7 -1
- localstack/services/sns/executor.py +9 -2
- localstack/services/sns/models.py +25 -25
- localstack/services/sns/provider.py +9 -7
- localstack/services/sns/publisher.py +37 -23
- localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
- localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
- localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
- localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
- 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 +2 -2
- localstack/services/sqs/developer_api.py +205 -0
- localstack/services/sqs/models.py +71 -36
- localstack/services/sqs/provider.py +56 -332
- localstack/services/sqs/query_api.py +8 -5
- localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
- localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +7 -5
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +123 -4
- localstack/services/ssm/provider.py +3 -4
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
- localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl_binding.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
- localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
- localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
- localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
- localstack/services/stepfunctions/asl/component/common/error_name/states_error_name_type.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadarr/payload_arr.py +1 -1
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadtmpl/payload_tmpl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +3 -3
- localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
- localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
- localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +4 -4
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/array/array_partition.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/generic/string_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_array.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
- localstack/services/stepfunctions/asl/component/program/program.py +9 -9
- localstack/services/stepfunctions/asl/component/program/states.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state.py +10 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/comparison.py +5 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_output_transformer/resource_output_transformer_csv.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +12 -13
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +2 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +18 -18
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +8 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +5 -7
- 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/component/state/state_wait/wait_function/timestamp.py +2 -2
- localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
- localstack/services/stepfunctions/asl/eval/environment.py +22 -24
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +10 -10
- localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
- localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
- localstack/services/stepfunctions/asl/eval/states.py +12 -12
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +6 -6
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +7 -6
- localstack/services/stepfunctions/asl/parse/asl_parser.py +1 -1
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +2 -3
- localstack/services/stepfunctions/asl/parse/preprocessor.py +44 -44
- localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
- localstack/services/stepfunctions/asl/static_analyser/intrinsic/variable_names_intrinsic_static_analyser.py +1 -1
- localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.py +2 -2
- localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
- localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
- localstack/services/stepfunctions/backend/activity.py +4 -4
- localstack/services/stepfunctions/backend/alias.py +8 -8
- localstack/services/stepfunctions/backend/execution.py +29 -30
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +28 -28
- localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
- localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
- localstack/services/stepfunctions/mocking/mock_config.py +9 -9
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/packages.py +14 -5
- localstack/services/stepfunctions/provider.py +34 -44
- localstack/services/stepfunctions/quotas.py +2 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
- localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
- localstack/services/stores.py +8 -8
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +8 -3
- localstack/state/codecs.py +61 -0
- localstack/state/core.py +11 -5
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +36 -23
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/cloudformation_utils.py +1 -1
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +68 -18
- localstack/testing/pytest/container.py +5 -5
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +188 -49
- localstack/testing/pytest/in_memory_localstack.py +1 -3
- localstack/testing/pytest/marking.py +42 -15
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/fixtures.py +4 -4
- localstack/testing/pytest/stepfunctions/utils.py +11 -10
- localstack/testing/pytest/util.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -4
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +8 -3
- localstack/testing/testselection/matching.py +2 -2
- localstack/testing/testselection/opt_out.py +1 -1
- localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
- localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
- localstack/testing/testselection/testselection.py +2 -2
- localstack/utils/analytics/cli.py +2 -3
- localstack/utils/analytics/client.py +5 -5
- localstack/utils/analytics/events.py +2 -2
- localstack/utils/analytics/metadata.py +6 -4
- localstack/utils/analytics/metrics/counter.py +11 -18
- localstack/utils/analytics/metrics/registry.py +2 -2
- localstack/utils/analytics/publisher.py +4 -5
- localstack/utils/analytics/service_providers.py +19 -0
- localstack/utils/analytics/service_request_aggregator.py +4 -4
- localstack/utils/archives.py +12 -12
- localstack/utils/asyncio.py +2 -2
- localstack/utils/aws/arns.py +26 -31
- localstack/utils/aws/aws_responses.py +21 -28
- localstack/utils/aws/aws_stack.py +7 -12
- localstack/utils/aws/dead_letter_queue.py +4 -9
- localstack/utils/aws/message_forwarding.py +8 -11
- localstack/utils/aws/request_context.py +5 -6
- localstack/utils/aws/resources.py +1 -1
- localstack/utils/aws/templating.py +4 -4
- localstack/utils/batch_policy.py +4 -4
- localstack/utils/bootstrap.py +37 -30
- 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 +33 -27
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +5 -6
- localstack/utils/container_utils/container_client.py +156 -160
- localstack/utils/container_utils/docker_cmd_client.py +97 -81
- localstack/utils/container_utils/docker_sdk_client.py +75 -72
- localstack/utils/crypto.py +12 -13
- localstack/utils/diagnose.py +11 -12
- localstack/utils/docker_utils.py +11 -7
- localstack/utils/files.py +34 -15
- localstack/utils/functions.py +5 -4
- localstack/utils/http.py +14 -14
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +21 -7
- localstack/utils/kinesis/kinesis_connector.py +2 -1
- localstack/utils/net.py +25 -17
- localstack/utils/no_exit_argument_parser.py +2 -2
- localstack/utils/numbers.py +9 -2
- localstack/utils/objects.py +15 -14
- localstack/utils/patch.py +14 -7
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +15 -14
- localstack/utils/scheduler.py +13 -12
- 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 +10 -8
- localstack/utils/testutil.py +17 -17
- localstack/utils/threads.py +3 -3
- localstack/utils/time.py +12 -4
- localstack/utils/urls.py +1 -3
- localstack/utils/xml.py +1 -1
- localstack/utils/xray/traceid.py +1 -1
- localstack/version.py +16 -3
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -13
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +663 -655
- {localstack_core-4.6.1.dev60.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 -47
- localstack/services/cloudformation/deploy.html +0 -144
- localstack/services/cloudformation/deploy_ui.py +0 -47
- localstack/services/cloudformation/plugins.py +0 -12
- localstack/services/lambda_/lambda_debug_mode/ldm.py +0 -375
- localstack/services/lambda_/lambda_debug_mode/ldm_config_file.py +0 -178
- localstack/services/lambda_/lambda_debug_mode/ldm_types.py +0 -11
- localstack/services/lambda_/lambda_debug_mode/ldm_utils.py +0 -43
- localstack_core-4.6.1.dev60.dist-info/plux.json +0 -1
- /localstack/{services/lambda_/lambda_debug_mode/__init__.py → testing/pytest/cloudformation/transformers.py} +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,7 @@ import dataclasses
|
|
|
2
2
|
import logging
|
|
3
3
|
import os
|
|
4
4
|
import threading
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import NamedTuple
|
|
6
6
|
from urllib.parse import urlparse
|
|
7
7
|
|
|
8
8
|
import requests
|
|
@@ -18,7 +18,12 @@ from localstack.http.client import SimpleRequestsClient
|
|
|
18
18
|
from localstack.http.proxy import ProxyHandler
|
|
19
19
|
from localstack.services.edge import ROUTER
|
|
20
20
|
from localstack.services.opensearch import versions
|
|
21
|
-
from localstack.services.opensearch.packages import
|
|
21
|
+
from localstack.services.opensearch.packages import (
|
|
22
|
+
ELASTICSEARCH_DEFAULT_VERSION,
|
|
23
|
+
OPENSEARCH_DEFAULT_VERSION,
|
|
24
|
+
elasticsearch_package,
|
|
25
|
+
opensearch_package,
|
|
26
|
+
)
|
|
22
27
|
from localstack.utils.aws.arns import parse_arn
|
|
23
28
|
from localstack.utils.common import (
|
|
24
29
|
ShellCommandThread,
|
|
@@ -37,7 +42,10 @@ LOG = logging.getLogger(__name__)
|
|
|
37
42
|
INTERNAL_USER_AUTH = ("localstack-internal", "localstack-internal")
|
|
38
43
|
DEFAULT_BACKEND_HOST = "127.0.0.1"
|
|
39
44
|
|
|
40
|
-
|
|
45
|
+
# user that starts the opensearch process if the current user is root
|
|
46
|
+
OS_USER_OPENSEARCH = "localstack"
|
|
47
|
+
|
|
48
|
+
CommandSettings = dict[str, str]
|
|
41
49
|
|
|
42
50
|
|
|
43
51
|
class Directories(NamedTuple):
|
|
@@ -49,8 +57,8 @@ class Directories(NamedTuple):
|
|
|
49
57
|
|
|
50
58
|
|
|
51
59
|
def get_cluster_health_status(
|
|
52
|
-
url: str, auth:
|
|
53
|
-
) ->
|
|
60
|
+
url: str, auth: tuple[str, str] | None, host: str | None = None
|
|
61
|
+
) -> str | None:
|
|
54
62
|
"""
|
|
55
63
|
Queries the health endpoint of OpenSearch/Elasticsearch and returns either the status ('green', 'yellow',
|
|
56
64
|
...) or None if the response returned a non-200 response.
|
|
@@ -125,7 +133,7 @@ def resolve_directories(version: str, cluster_path: str, data_root: str = None)
|
|
|
125
133
|
return Directories(install_dir, tmp_dir, modules_dir, data_dir, backup_dir)
|
|
126
134
|
|
|
127
135
|
|
|
128
|
-
def build_cluster_run_command(cluster_bin: str, settings: CommandSettings) ->
|
|
136
|
+
def build_cluster_run_command(cluster_bin: str, settings: CommandSettings) -> list[str]:
|
|
129
137
|
"""
|
|
130
138
|
Takes the command settings dict and builds the actual command (which can then be executed as a shell command).
|
|
131
139
|
|
|
@@ -169,13 +177,13 @@ class SecurityOptions:
|
|
|
169
177
|
master_password: str | None
|
|
170
178
|
|
|
171
179
|
@property
|
|
172
|
-
def auth(self) ->
|
|
180
|
+
def auth(self) -> tuple[str, str] | None:
|
|
173
181
|
"""Returns an auth tuple which can be used for HTTP requests or None, if disabled."""
|
|
174
182
|
return None if not self.enabled else (self.master_username, self.master_password)
|
|
175
183
|
|
|
176
184
|
@staticmethod
|
|
177
185
|
def from_input(
|
|
178
|
-
advanced_security_options:
|
|
186
|
+
advanced_security_options: AdvancedSecurityOptionsInput | None,
|
|
179
187
|
) -> "SecurityOptions":
|
|
180
188
|
"""
|
|
181
189
|
Parses the given AdvancedSecurityOptionsInput, performs some validation, and returns the parsed SecurityOptions.
|
|
@@ -215,7 +223,7 @@ class SecurityOptions:
|
|
|
215
223
|
|
|
216
224
|
def register_cluster(
|
|
217
225
|
host: str, path: str, forward_url: str, custom_endpoint: CustomEndpoint
|
|
218
|
-
) ->
|
|
226
|
+
) -> list[Rule]:
|
|
219
227
|
"""
|
|
220
228
|
Registers routes for a cluster at the edge router.
|
|
221
229
|
Depending on which endpoint strategy is employed, and if a custom endpoint is enabled, different routes are
|
|
@@ -314,7 +322,7 @@ class OpensearchCluster(Server):
|
|
|
314
322
|
|
|
315
323
|
@property
|
|
316
324
|
def default_version(self) -> str:
|
|
317
|
-
return
|
|
325
|
+
return OPENSEARCH_DEFAULT_VERSION
|
|
318
326
|
|
|
319
327
|
@property
|
|
320
328
|
def version(self) -> str:
|
|
@@ -336,9 +344,9 @@ class OpensearchCluster(Server):
|
|
|
336
344
|
|
|
337
345
|
@property
|
|
338
346
|
def os_user(self):
|
|
339
|
-
return
|
|
347
|
+
return OS_USER_OPENSEARCH
|
|
340
348
|
|
|
341
|
-
def health(self) ->
|
|
349
|
+
def health(self) -> str | None:
|
|
342
350
|
return get_cluster_health_status(self.url, auth=self.auth)
|
|
343
351
|
|
|
344
352
|
def do_start_thread(self) -> FuncThread:
|
|
@@ -451,8 +459,8 @@ class OpensearchCluster(Server):
|
|
|
451
459
|
return settings
|
|
452
460
|
|
|
453
461
|
def _create_run_command(
|
|
454
|
-
self, directories: Directories, additional_settings:
|
|
455
|
-
) ->
|
|
462
|
+
self, directories: Directories, additional_settings: CommandSettings | None = None
|
|
463
|
+
) -> list[str]:
|
|
456
464
|
# delete opensearch data that may be cached locally from a previous test run
|
|
457
465
|
bin_path = os.path.join(directories.install, "bin", self.bin_name)
|
|
458
466
|
|
|
@@ -464,7 +472,7 @@ class OpensearchCluster(Server):
|
|
|
464
472
|
cmd = build_cluster_run_command(bin_path, settings)
|
|
465
473
|
return cmd
|
|
466
474
|
|
|
467
|
-
def _create_env_vars(self, directories: Directories) ->
|
|
475
|
+
def _create_env_vars(self, directories: Directories) -> dict:
|
|
468
476
|
env_vars = {
|
|
469
477
|
"JAVA_HOME": os.path.join(directories.install, "jdk"),
|
|
470
478
|
"OPENSEARCH_JAVA_OPTS": os.environ.get("OPENSEARCH_JAVA_OPTS", "-Xms200m -Xmx600m"),
|
|
@@ -580,7 +588,7 @@ class EdgeProxiedOpensearchCluster(Server):
|
|
|
580
588
|
|
|
581
589
|
@property
|
|
582
590
|
def default_version(self):
|
|
583
|
-
return
|
|
591
|
+
return OPENSEARCH_DEFAULT_VERSION
|
|
584
592
|
|
|
585
593
|
@property
|
|
586
594
|
def url(self) -> str:
|
|
@@ -658,7 +666,7 @@ class ElasticsearchCluster(OpensearchCluster):
|
|
|
658
666
|
|
|
659
667
|
@property
|
|
660
668
|
def default_version(self) -> str:
|
|
661
|
-
return
|
|
669
|
+
return ELASTICSEARCH_DEFAULT_VERSION
|
|
662
670
|
|
|
663
671
|
@property
|
|
664
672
|
def bin_name(self) -> str:
|
|
@@ -666,7 +674,7 @@ class ElasticsearchCluster(OpensearchCluster):
|
|
|
666
674
|
|
|
667
675
|
@property
|
|
668
676
|
def os_user(self):
|
|
669
|
-
return
|
|
677
|
+
return OS_USER_OPENSEARCH
|
|
670
678
|
|
|
671
679
|
def _ensure_installed(self):
|
|
672
680
|
elasticsearch_package.install(self.version)
|
|
@@ -699,7 +707,7 @@ class ElasticsearchCluster(OpensearchCluster):
|
|
|
699
707
|
|
|
700
708
|
return settings
|
|
701
709
|
|
|
702
|
-
def _create_env_vars(self, directories: Directories) ->
|
|
710
|
+
def _create_env_vars(self, directories: Directories) -> dict:
|
|
703
711
|
return {
|
|
704
712
|
**elasticsearch_package.get_installer(self.version).get_java_env_vars(),
|
|
705
713
|
"ES_JAVA_OPTS": os.environ.get("ES_JAVA_OPTS", "-Xms200m -Xmx600m"),
|
|
@@ -710,7 +718,7 @@ class ElasticsearchCluster(OpensearchCluster):
|
|
|
710
718
|
class EdgeProxiedElasticsearchCluster(EdgeProxiedOpensearchCluster):
|
|
711
719
|
@property
|
|
712
720
|
def default_version(self):
|
|
713
|
-
return
|
|
721
|
+
return ELASTICSEARCH_DEFAULT_VERSION
|
|
714
722
|
|
|
715
723
|
def _backend_cluster(self) -> OpensearchCluster:
|
|
716
724
|
return ElasticsearchCluster(
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import dataclasses
|
|
2
2
|
import logging
|
|
3
3
|
import threading
|
|
4
|
-
from typing import Dict, Optional
|
|
5
4
|
|
|
6
5
|
from botocore.utils import ArnParser
|
|
7
6
|
|
|
@@ -80,9 +79,9 @@ class DomainKey:
|
|
|
80
79
|
|
|
81
80
|
def build_cluster_endpoint(
|
|
82
81
|
domain_key: DomainKey,
|
|
83
|
-
custom_endpoint:
|
|
82
|
+
custom_endpoint: CustomEndpoint | None = None,
|
|
84
83
|
engine_type: EngineType = EngineType.OpenSearch,
|
|
85
|
-
preferred_port:
|
|
84
|
+
preferred_port: int | None = None,
|
|
86
85
|
) -> str:
|
|
87
86
|
"""
|
|
88
87
|
Builds the cluster endpoint from and optional custom_endpoint and the localstack opensearch config. Example
|
|
@@ -131,7 +130,7 @@ def build_cluster_endpoint(
|
|
|
131
130
|
|
|
132
131
|
def determine_custom_endpoint(
|
|
133
132
|
domain_endpoint_options: DomainEndpointOptions,
|
|
134
|
-
) ->
|
|
133
|
+
) -> CustomEndpoint | None:
|
|
135
134
|
if not domain_endpoint_options:
|
|
136
135
|
return
|
|
137
136
|
|
|
@@ -146,7 +145,7 @@ def determine_custom_endpoint(
|
|
|
146
145
|
|
|
147
146
|
|
|
148
147
|
class ClusterManager:
|
|
149
|
-
clusters:
|
|
148
|
+
clusters: dict[str, Server]
|
|
150
149
|
|
|
151
150
|
def __init__(self) -> None:
|
|
152
151
|
self.clusters = {}
|
|
@@ -155,9 +154,9 @@ class ClusterManager:
|
|
|
155
154
|
self,
|
|
156
155
|
arn: str,
|
|
157
156
|
version: str,
|
|
158
|
-
endpoint_options:
|
|
159
|
-
security_options:
|
|
160
|
-
preferred_port:
|
|
157
|
+
endpoint_options: DomainEndpointOptions | None = None,
|
|
158
|
+
security_options: SecurityOptions | None = None,
|
|
159
|
+
preferred_port: int | None = None,
|
|
161
160
|
) -> Server:
|
|
162
161
|
"""
|
|
163
162
|
Creates a new cluster.
|
|
@@ -190,7 +189,7 @@ class ClusterManager:
|
|
|
190
189
|
self.clusters[arn] = cluster
|
|
191
190
|
return cluster
|
|
192
191
|
|
|
193
|
-
def get(self, arn: str) ->
|
|
192
|
+
def get(self, arn: str) -> Server | None:
|
|
194
193
|
return self.clusters.get(arn)
|
|
195
194
|
|
|
196
195
|
def remove(self, arn: str):
|
|
@@ -257,8 +256,8 @@ class MultiplexingClusterManager(ClusterManager):
|
|
|
257
256
|
- OPENSEARCH_ENDPOINT_STRATEGY = domain / path
|
|
258
257
|
"""
|
|
259
258
|
|
|
260
|
-
cluster:
|
|
261
|
-
endpoints:
|
|
259
|
+
cluster: Server | None
|
|
260
|
+
endpoints: dict[str, ClusterEndpoint]
|
|
262
261
|
|
|
263
262
|
def __init__(self) -> None:
|
|
264
263
|
super().__init__()
|
|
@@ -366,7 +365,7 @@ class SingletonClusterManager(ClusterManager):
|
|
|
366
365
|
- ES_MULTI_CLUSTER == False
|
|
367
366
|
"""
|
|
368
367
|
|
|
369
|
-
cluster:
|
|
368
|
+
cluster: Server | None
|
|
370
369
|
|
|
371
370
|
def __init__(self) -> None:
|
|
372
371
|
super().__init__()
|
|
@@ -378,8 +377,8 @@ class SingletonClusterManager(ClusterManager):
|
|
|
378
377
|
self,
|
|
379
378
|
arn: str,
|
|
380
379
|
version: str,
|
|
381
|
-
endpoint_options:
|
|
382
|
-
security_options:
|
|
380
|
+
endpoint_options: DomainEndpointOptions | None = None,
|
|
381
|
+
security_options: SecurityOptions | None = None,
|
|
383
382
|
preferred_port: int = None,
|
|
384
383
|
) -> Server:
|
|
385
384
|
with self.mutex:
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Dict
|
|
2
|
-
|
|
3
1
|
from localstack.aws.api.opensearch import DomainStatus
|
|
4
2
|
from localstack.services.stores import (
|
|
5
3
|
AccountRegionBundle,
|
|
@@ -12,7 +10,7 @@ from localstack.utils.tagging import TaggingService
|
|
|
12
10
|
|
|
13
11
|
class OpenSearchStore(BaseStore):
|
|
14
12
|
# storage for domain resources (access should be protected with the _domain_mutex)
|
|
15
|
-
opensearch_domains:
|
|
13
|
+
opensearch_domains: dict[str, DomainStatus] = LocalAttribute(default=dict)
|
|
16
14
|
|
|
17
15
|
# static tagging service instance
|
|
18
16
|
TAGS = CrossRegionAttribute(default=TaggingService)
|
|
@@ -5,18 +5,10 @@ import re
|
|
|
5
5
|
import shutil
|
|
6
6
|
import textwrap
|
|
7
7
|
import threading
|
|
8
|
-
from typing import List
|
|
9
8
|
|
|
10
9
|
import semver
|
|
11
10
|
|
|
12
11
|
from localstack import config
|
|
13
|
-
from localstack.constants import (
|
|
14
|
-
ELASTICSEARCH_DEFAULT_VERSION,
|
|
15
|
-
ELASTICSEARCH_DELETE_MODULES,
|
|
16
|
-
ELASTICSEARCH_PLUGIN_LIST,
|
|
17
|
-
OPENSEARCH_DEFAULT_VERSION,
|
|
18
|
-
OPENSEARCH_PLUGIN_LIST,
|
|
19
|
-
)
|
|
20
12
|
from localstack.packages import InstallTarget, Package, PackageInstaller
|
|
21
13
|
from localstack.packages.java import java_package
|
|
22
14
|
from localstack.services.opensearch import versions
|
|
@@ -33,6 +25,32 @@ from localstack.utils.sync import SynchronizedDefaultDict, retry
|
|
|
33
25
|
|
|
34
26
|
LOG = logging.getLogger(__name__)
|
|
35
27
|
|
|
28
|
+
# the version of opensearch which is used by default
|
|
29
|
+
OPENSEARCH_DEFAULT_VERSION = "OpenSearch_3.1"
|
|
30
|
+
|
|
31
|
+
# See https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-plugins.html
|
|
32
|
+
OPENSEARCH_PLUGIN_LIST = [
|
|
33
|
+
"ingest-attachment",
|
|
34
|
+
"analysis-kuromoji",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
# the version of elasticsearch that is pre-seeded into the base image (sync with Dockerfile.base)
|
|
38
|
+
ELASTICSEARCH_DEFAULT_VERSION = "Elasticsearch_7.10"
|
|
39
|
+
|
|
40
|
+
# See https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/aes-supported-plugins.html
|
|
41
|
+
ELASTICSEARCH_PLUGIN_LIST = [
|
|
42
|
+
"analysis-icu",
|
|
43
|
+
"ingest-attachment",
|
|
44
|
+
"analysis-kuromoji",
|
|
45
|
+
"mapper-murmur3",
|
|
46
|
+
"mapper-size",
|
|
47
|
+
"analysis-phonetic",
|
|
48
|
+
"analysis-smartcn",
|
|
49
|
+
"analysis-stempel",
|
|
50
|
+
"analysis-ukrainian",
|
|
51
|
+
]
|
|
52
|
+
# Default ES modules to exclude (save apprx 66MB in the final image)
|
|
53
|
+
ELASTICSEARCH_DELETE_MODULES = ["ingest-geoip"]
|
|
36
54
|
|
|
37
55
|
_OPENSEARCH_INSTALL_LOCKS = SynchronizedDefaultDict(threading.RLock)
|
|
38
56
|
|
|
@@ -49,7 +67,7 @@ class OpensearchPackage(Package):
|
|
|
49
67
|
else:
|
|
50
68
|
return OpensearchPackageInstaller(version)
|
|
51
69
|
|
|
52
|
-
def get_versions(self) ->
|
|
70
|
+
def get_versions(self) -> list[str]:
|
|
53
71
|
return list(versions.install_versions.keys())
|
|
54
72
|
|
|
55
73
|
|
|
@@ -3,9 +3,8 @@ import os
|
|
|
3
3
|
import re
|
|
4
4
|
import threading
|
|
5
5
|
from copy import deepcopy
|
|
6
|
-
from datetime import
|
|
6
|
+
from datetime import UTC, datetime
|
|
7
7
|
from random import randint
|
|
8
|
-
from typing import Dict, Optional
|
|
9
8
|
from urllib.parse import urlparse
|
|
10
9
|
|
|
11
10
|
from localstack import config
|
|
@@ -27,6 +26,7 @@ from localstack.aws.api.opensearch import (
|
|
|
27
26
|
CognitoOptions,
|
|
28
27
|
CognitoOptionsStatus,
|
|
29
28
|
ColdStorageOptions,
|
|
29
|
+
CompatibleVersionsMap,
|
|
30
30
|
CreateDomainRequest,
|
|
31
31
|
CreateDomainResponse,
|
|
32
32
|
DeleteDomainResponse,
|
|
@@ -76,7 +76,6 @@ from localstack.aws.api.opensearch import (
|
|
|
76
76
|
VolumeType,
|
|
77
77
|
VPCDerivedInfoStatus,
|
|
78
78
|
)
|
|
79
|
-
from localstack.constants import OPENSEARCH_DEFAULT_VERSION
|
|
80
79
|
from localstack.services.opensearch import versions
|
|
81
80
|
from localstack.services.opensearch.cluster import SecurityOptions
|
|
82
81
|
from localstack.services.opensearch.cluster_manager import (
|
|
@@ -85,6 +84,7 @@ from localstack.services.opensearch.cluster_manager import (
|
|
|
85
84
|
create_cluster_manager,
|
|
86
85
|
)
|
|
87
86
|
from localstack.services.opensearch.models import OpenSearchStore, opensearch_stores
|
|
87
|
+
from localstack.services.opensearch.packages import OPENSEARCH_DEFAULT_VERSION
|
|
88
88
|
from localstack.services.plugins import ServiceLifecycleHook
|
|
89
89
|
from localstack.state import AssetDirectory, StateVisitor
|
|
90
90
|
from localstack.utils.aws.arns import parse_arn
|
|
@@ -143,9 +143,9 @@ def _run_cluster_startup_monitor(cluster: Server, domain_name: str, region: str)
|
|
|
143
143
|
def create_cluster(
|
|
144
144
|
domain_key: DomainKey,
|
|
145
145
|
engine_version: str,
|
|
146
|
-
domain_endpoint_options:
|
|
147
|
-
security_options:
|
|
148
|
-
preferred_port:
|
|
146
|
+
domain_endpoint_options: DomainEndpointOptions | None,
|
|
147
|
+
security_options: SecurityOptions | None,
|
|
148
|
+
preferred_port: int | None = None,
|
|
149
149
|
):
|
|
150
150
|
"""
|
|
151
151
|
Uses the ClusterManager to create a new cluster for the given domain key. NOT thread safe, needs to be called
|
|
@@ -369,7 +369,7 @@ def get_domain_status(
|
|
|
369
369
|
Cancellable=False,
|
|
370
370
|
UpdateStatus=DeploymentStatus.COMPLETED,
|
|
371
371
|
Description="There is no software update available for this domain.",
|
|
372
|
-
AutomatedUpdateDate=datetime.fromtimestamp(0, tz=
|
|
372
|
+
AutomatedUpdateDate=datetime.fromtimestamp(0, tz=UTC),
|
|
373
373
|
OptionalDeployment=True,
|
|
374
374
|
),
|
|
375
375
|
DomainEndpointOptions=stored_status.get("DomainEndpointOptions")
|
|
@@ -399,7 +399,7 @@ def _ensure_domain_exists(arn: ARN) -> None:
|
|
|
399
399
|
|
|
400
400
|
|
|
401
401
|
def _update_domain_config_request_to_status(request: UpdateDomainConfigRequest) -> DomainStatus:
|
|
402
|
-
request:
|
|
402
|
+
request: dict
|
|
403
403
|
request.pop("DryRun", None)
|
|
404
404
|
request.pop("DomainName", None)
|
|
405
405
|
return request
|
|
@@ -467,10 +467,11 @@ class OpensearchProvider(OpensearchApi, ServiceLifecycleHook):
|
|
|
467
467
|
preferred_port=preferred_port,
|
|
468
468
|
)
|
|
469
469
|
except Exception:
|
|
470
|
-
LOG.
|
|
470
|
+
LOG.error(
|
|
471
471
|
"Could not restore domain %s in region %s.",
|
|
472
472
|
domain_name,
|
|
473
473
|
region,
|
|
474
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
474
475
|
)
|
|
475
476
|
|
|
476
477
|
def on_before_state_reset(self):
|
|
@@ -581,7 +582,7 @@ class OpensearchProvider(OpensearchApi, ServiceLifecycleHook):
|
|
|
581
582
|
if domain_status is None:
|
|
582
583
|
raise ResourceNotFoundException(f"Domain not found: {domain_key.domain_name}")
|
|
583
584
|
|
|
584
|
-
status_update:
|
|
585
|
+
status_update: dict = _update_domain_config_request_to_status(payload)
|
|
585
586
|
domain_status.update(status_update)
|
|
586
587
|
|
|
587
588
|
return UpdateDomainConfigResponse(DomainConfig=_status_to_config(domain_status))
|
|
@@ -650,6 +651,10 @@ class OpensearchProvider(OpensearchApi, ServiceLifecycleHook):
|
|
|
650
651
|
for comp in versions.compatible_versions
|
|
651
652
|
if comp["SourceVersion"] == version_filter
|
|
652
653
|
]
|
|
654
|
+
if not compatible_versions:
|
|
655
|
+
compatible_versions = [
|
|
656
|
+
CompatibleVersionsMap(SourceVersion=version_filter, TargetVersions=[])
|
|
657
|
+
]
|
|
653
658
|
return GetCompatibleVersionsResponse(CompatibleVersions=compatible_versions)
|
|
654
659
|
|
|
655
660
|
def describe_domain_config(
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
|
|
4
4
|
import copy
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import TypedDict
|
|
7
7
|
|
|
8
8
|
import localstack.services.cloudformation.provider_utils as util
|
|
9
9
|
from localstack.aws.api.es import CreateElasticsearchDomainRequest
|
|
@@ -17,105 +17,105 @@ from localstack.utils.collections import convert_to_typed_dict
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class ElasticsearchDomainProperties(TypedDict):
|
|
20
|
-
AccessPolicies:
|
|
21
|
-
AdvancedOptions:
|
|
22
|
-
AdvancedSecurityOptions:
|
|
23
|
-
Arn:
|
|
24
|
-
CognitoOptions:
|
|
25
|
-
DomainArn:
|
|
26
|
-
DomainEndpoint:
|
|
27
|
-
DomainEndpointOptions:
|
|
28
|
-
DomainName:
|
|
29
|
-
EBSOptions:
|
|
30
|
-
ElasticsearchClusterConfig:
|
|
31
|
-
ElasticsearchVersion:
|
|
32
|
-
EncryptionAtRestOptions:
|
|
33
|
-
Id:
|
|
34
|
-
LogPublishingOptions:
|
|
35
|
-
NodeToNodeEncryptionOptions:
|
|
36
|
-
SnapshotOptions:
|
|
37
|
-
Tags:
|
|
38
|
-
VPCOptions:
|
|
20
|
+
AccessPolicies: dict | None
|
|
21
|
+
AdvancedOptions: dict | None
|
|
22
|
+
AdvancedSecurityOptions: AdvancedSecurityOptionsInput | None
|
|
23
|
+
Arn: str | None
|
|
24
|
+
CognitoOptions: CognitoOptions | None
|
|
25
|
+
DomainArn: str | None
|
|
26
|
+
DomainEndpoint: str | None
|
|
27
|
+
DomainEndpointOptions: DomainEndpointOptions | None
|
|
28
|
+
DomainName: str | None
|
|
29
|
+
EBSOptions: EBSOptions | None
|
|
30
|
+
ElasticsearchClusterConfig: ElasticsearchClusterConfig | None
|
|
31
|
+
ElasticsearchVersion: str | None
|
|
32
|
+
EncryptionAtRestOptions: EncryptionAtRestOptions | None
|
|
33
|
+
Id: str | None
|
|
34
|
+
LogPublishingOptions: dict | None
|
|
35
|
+
NodeToNodeEncryptionOptions: NodeToNodeEncryptionOptions | None
|
|
36
|
+
SnapshotOptions: SnapshotOptions | None
|
|
37
|
+
Tags: list[Tag] | None
|
|
38
|
+
VPCOptions: VPCOptions | None
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class ZoneAwarenessConfig(TypedDict):
|
|
42
|
-
AvailabilityZoneCount:
|
|
42
|
+
AvailabilityZoneCount: int | None
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
class ColdStorageOptions(TypedDict):
|
|
46
|
-
Enabled:
|
|
46
|
+
Enabled: bool | None
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
class ElasticsearchClusterConfig(TypedDict):
|
|
50
|
-
ColdStorageOptions:
|
|
51
|
-
DedicatedMasterCount:
|
|
52
|
-
DedicatedMasterEnabled:
|
|
53
|
-
DedicatedMasterType:
|
|
54
|
-
InstanceCount:
|
|
55
|
-
InstanceType:
|
|
56
|
-
WarmCount:
|
|
57
|
-
WarmEnabled:
|
|
58
|
-
WarmType:
|
|
59
|
-
ZoneAwarenessConfig:
|
|
60
|
-
ZoneAwarenessEnabled:
|
|
50
|
+
ColdStorageOptions: ColdStorageOptions | None
|
|
51
|
+
DedicatedMasterCount: int | None
|
|
52
|
+
DedicatedMasterEnabled: bool | None
|
|
53
|
+
DedicatedMasterType: str | None
|
|
54
|
+
InstanceCount: int | None
|
|
55
|
+
InstanceType: str | None
|
|
56
|
+
WarmCount: int | None
|
|
57
|
+
WarmEnabled: bool | None
|
|
58
|
+
WarmType: str | None
|
|
59
|
+
ZoneAwarenessConfig: ZoneAwarenessConfig | None
|
|
60
|
+
ZoneAwarenessEnabled: bool | None
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
class SnapshotOptions(TypedDict):
|
|
64
|
-
AutomatedSnapshotStartHour:
|
|
64
|
+
AutomatedSnapshotStartHour: int | None
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
class VPCOptions(TypedDict):
|
|
68
|
-
SecurityGroupIds:
|
|
69
|
-
SubnetIds:
|
|
68
|
+
SecurityGroupIds: list[str] | None
|
|
69
|
+
SubnetIds: list[str] | None
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
class NodeToNodeEncryptionOptions(TypedDict):
|
|
73
|
-
Enabled:
|
|
73
|
+
Enabled: bool | None
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
class DomainEndpointOptions(TypedDict):
|
|
77
|
-
CustomEndpoint:
|
|
78
|
-
CustomEndpointCertificateArn:
|
|
79
|
-
CustomEndpointEnabled:
|
|
80
|
-
EnforceHTTPS:
|
|
81
|
-
TLSSecurityPolicy:
|
|
77
|
+
CustomEndpoint: str | None
|
|
78
|
+
CustomEndpointCertificateArn: str | None
|
|
79
|
+
CustomEndpointEnabled: bool | None
|
|
80
|
+
EnforceHTTPS: bool | None
|
|
81
|
+
TLSSecurityPolicy: str | None
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
class CognitoOptions(TypedDict):
|
|
85
|
-
Enabled:
|
|
86
|
-
IdentityPoolId:
|
|
87
|
-
RoleArn:
|
|
88
|
-
UserPoolId:
|
|
85
|
+
Enabled: bool | None
|
|
86
|
+
IdentityPoolId: str | None
|
|
87
|
+
RoleArn: str | None
|
|
88
|
+
UserPoolId: str | None
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
class MasterUserOptions(TypedDict):
|
|
92
|
-
MasterUserARN:
|
|
93
|
-
MasterUserName:
|
|
94
|
-
MasterUserPassword:
|
|
92
|
+
MasterUserARN: str | None
|
|
93
|
+
MasterUserName: str | None
|
|
94
|
+
MasterUserPassword: str | None
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
class AdvancedSecurityOptionsInput(TypedDict):
|
|
98
|
-
AnonymousAuthEnabled:
|
|
99
|
-
Enabled:
|
|
100
|
-
InternalUserDatabaseEnabled:
|
|
101
|
-
MasterUserOptions:
|
|
98
|
+
AnonymousAuthEnabled: bool | None
|
|
99
|
+
Enabled: bool | None
|
|
100
|
+
InternalUserDatabaseEnabled: bool | None
|
|
101
|
+
MasterUserOptions: MasterUserOptions | None
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
class EBSOptions(TypedDict):
|
|
105
|
-
EBSEnabled:
|
|
106
|
-
Iops:
|
|
107
|
-
VolumeSize:
|
|
108
|
-
VolumeType:
|
|
105
|
+
EBSEnabled: bool | None
|
|
106
|
+
Iops: int | None
|
|
107
|
+
VolumeSize: int | None
|
|
108
|
+
VolumeType: str | None
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
class EncryptionAtRestOptions(TypedDict):
|
|
112
|
-
Enabled:
|
|
113
|
-
KmsKeyId:
|
|
112
|
+
Enabled: bool | None
|
|
113
|
+
KmsKeyId: str | None
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
class Tag(TypedDict):
|
|
117
|
-
Key:
|
|
118
|
-
Value:
|
|
117
|
+
Key: str | None
|
|
118
|
+
Value: str | None
|
|
119
119
|
|
|
120
120
|
|
|
121
121
|
REPEATED_INVOCATION = "repeated_invocation"
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class ElasticsearchDomainProviderPlugin(CloudFormationResourceProviderPlugin):
|
|
|
10
8
|
name = "AWS::Elasticsearch::Domain"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.opensearch.resource_providers.aws_elasticsearch_domain import (
|