This repository was archived by the owner on Mar 23, 2026. It is now read-only.
File tree Expand file tree Collapse file tree
localstack-core/localstack/services Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2626from localstack .aws .connect import connect_to
2727from localstack .services .moto import call_moto
2828from localstack .services .plugins import ServiceLifecycleHook
29+ from localstack .state import StateVisitor
2930
3031
3132class Route53Provider (Route53Api , ServiceLifecycleHook ):
33+ def accept_state_visitor (self , visitor : StateVisitor ):
34+ from localstack .services .route53 .models import route53_stores
35+
36+ visitor .visit (route53_backends )
37+ visitor .visit (route53_stores )
38+
3239 def create_hosted_zone (
3340 self ,
3441 context : RequestContext ,
Original file line number Diff line number Diff line change 100100 validate_mutation_protection ,
101101 validate_priority ,
102102)
103+ from localstack .state import StateVisitor
103104from localstack .utils .aws import arns
104105from localstack .utils .aws .arns import extract_account_id_from_arn , extract_region_from_arn
105106from localstack .utils .collections import select_from_typed_dict
106107from localstack .utils .patch import patch
107108
108109
109110class Route53ResolverProvider (Route53ResolverApi ):
111+ def accept_state_visitor (self , visitor : StateVisitor ):
112+ visitor .visit (route53resolver_backends )
113+ visitor .visit (route53resolver_stores )
114+
110115 @staticmethod
111116 def get_store (account_id : str , region : str ) -> Route53ResolverStore :
112117 return route53resolver_stores [account_id ][region ]
Original file line number Diff line number Diff line change 1212from localstack .aws .forwarder import NotImplementedAvoidFallbackError
1313from localstack .services .s3 .models import s3_stores
1414from localstack .services .s3control .validation import validate_tags
15+ from localstack .state import StateVisitor
1516from localstack .utils .tagging import TaggingService
1617
1718
@@ -21,6 +22,11 @@ def __init__(self, message=None):
2122
2223
2324class S3ControlProvider (S3ControlApi ):
25+ def accept_state_visitor (self , visitor : StateVisitor ):
26+ from moto .s3control .models import s3control_backends
27+
28+ visitor .visit (s3control_backends )
29+
2430 """
2531 S3Control is a management interface for S3, and can access some of its internals with no public API
2632 This requires us to access the s3 stores directly
Original file line number Diff line number Diff line change 11import logging
22import re
33
4- from moto .scheduler .models import EventBridgeSchedulerBackend
4+ from moto .scheduler .models import EventBridgeSchedulerBackend , scheduler_backends
55
66from localstack .aws .api .scheduler import SchedulerApi , ValidationException
77from localstack .services .events .rule import RULE_SCHEDULE_CRON_REGEX , RULE_SCHEDULE_RATE_REGEX
88from localstack .services .plugins import ServiceLifecycleHook
9+ from localstack .state import StateVisitor
910from localstack .utils .patch import patch
1011
1112LOG = logging .getLogger (__name__ )
1718
1819
1920class SchedulerProvider (SchedulerApi , ServiceLifecycleHook ):
20- pass
21+ def accept_state_visitor (self , visitor : StateVisitor ):
22+ visitor .visit (scheduler_backends )
2123
2224
2325def _validate_schedule_expression (schedule_expression : str ) -> None :
Original file line number Diff line number Diff line change 6565)
6666from localstack .aws .connect import connect_to
6767from localstack .services .moto import call_moto
68+ from localstack .state import StateVisitor
6869from localstack .utils .aws import arns
6970from localstack .utils .patch import patch
7071from localstack .utils .time import today_no_time
@@ -105,6 +106,9 @@ def __init__(self):
105106 super ().__init__ ()
106107 apply_patches ()
107108
109+ def accept_state_visitor (self , visitor : StateVisitor ):
110+ visitor .visit (secretsmanager_backends )
111+
108112 @staticmethod
109113 def get_moto_backend_for_resource (
110114 name_or_arn : str , context : RequestContext
Original file line number Diff line number Diff line change 6262from localstack .services .moto import call_moto
6363from localstack .services .plugins import ServiceLifecycleHook
6464from localstack .services .ses .models import EmailType , SentEmail , SentEmailBody
65+ from localstack .state import StateVisitor
6566from localstack .utils .aws import arns
6667from localstack .utils .files import mkdir
6768from localstack .utils .strings import long_uid , to_str
@@ -177,6 +178,9 @@ def register_ses_api_resource():
177178
178179
179180class SesProvider (SesApi , ServiceLifecycleHook ):
181+ def accept_state_visitor (self , visitor : StateVisitor ):
182+ visitor .visit (ses_backends )
183+
180184 #
181185 # Lifecycle Hooks
182186 #
Original file line number Diff line number Diff line change 8686from localstack .utils .collections import PaginatedList , select_from_typed_dict
8787from localstack .utils .strings import short_uid , to_bytes , to_str
8888
89+ from ...state import StateVisitor
8990from .analytics import internal_api_calls
9091
9192# set up logger
@@ -118,6 +119,10 @@ def __init__(self) -> None:
118119 self ._publisher = PublishDispatcher ()
119120 self ._signature_cert_pem : str = SNS_SERVER_CERT
120121
122+ def accept_state_visitor (self , visitor : StateVisitor ):
123+ visitor .visit (sns_backends )
124+ visitor .visit (sns_stores )
125+
121126 def on_before_stop (self ):
122127 self ._publisher .shutdown ()
123128
Original file line number Diff line number Diff line change 118118 parse_and_validate_topic_arn ,
119119 validate_subscription_attribute ,
120120)
121+ from localstack .state import StateVisitor
121122from localstack .utils .aws .arns import (
122123 extract_account_id_from_arn ,
123124 extract_region_from_arn ,
@@ -142,6 +143,9 @@ def __init__(self) -> None:
142143 self ._publisher = PublishDispatcher ()
143144 self ._signature_cert_pem : str = SNS_SERVER_CERT
144145
146+ def accept_state_visitor (self , visitor : StateVisitor ):
147+ visitor .visit (sns_stores )
148+
145149 def on_before_stop (self ):
146150 self ._publisher .shutdown ()
147151
Original file line number Diff line number Diff line change 101101 parse_queue_url ,
102102)
103103from localstack .services .stores import AccountRegionBundle
104+ from localstack .state import StateVisitor
104105from localstack .utils .aws .arns import parse_arn
105106from localstack .utils .bootstrap import is_api_enabled
106107from localstack .utils .cloudwatch .cloudwatch_util import (
@@ -659,6 +660,9 @@ def __init__(self) -> None:
659660 self ._router_rules = []
660661 self ._init_cloudwatch_metrics_reporting ()
661662
663+ def accept_state_visitor (self , visitor : StateVisitor ):
664+ visitor .visit (sqs_stores )
665+
662666 @staticmethod
663667 def get_store (account_id : str , region : str ) -> SqsStore :
664668 return sqs_stores [account_id ][region ]
Original file line number Diff line number Diff line change 7878)
7979from localstack .aws .connect import connect_to
8080from localstack .services .moto import call_moto , call_moto_with_request
81+ from localstack .state import StateVisitor
8182from localstack .utils .aws .arns import extract_resource_from_arn , is_arn
8283from localstack .utils .bootstrap import is_api_enabled
8384from localstack .utils .collections import remove_attributes
@@ -105,6 +106,11 @@ def __init__(self):
105106
106107# TODO: check if _normalize_name(..) calls are still required here
107108class SsmProvider (SsmApi , ABC ):
109+ def accept_state_visitor (self , visitor : StateVisitor ):
110+ from moto .ssm .models import ssm_backends
111+
112+ visitor .visit (ssm_backends )
113+
108114 def get_parameters (
109115 self ,
110116 context : RequestContext ,
You can’t perform that action at this time.
0 commit comments