|
35 | 35 | from localstack.services.cloudwatch.alarm_scheduler import AlarmScheduler |
36 | 36 | from localstack.services.edge import ROUTER |
37 | 37 | from localstack.services.plugins import SERVICE_PLUGINS, ServiceLifecycleHook |
| 38 | +from localstack.state import StateVisitor |
38 | 39 | from localstack.utils.aws import arns |
39 | 40 | from localstack.utils.aws.arns import extract_account_id_from_arn, lambda_function_name |
40 | 41 | from localstack.utils.aws.request_context import ( |
@@ -306,8 +307,13 @@ def __init__(self): |
306 | 307 | self.tags = TaggingService() |
307 | 308 | self.alarm_scheduler = None |
308 | 309 |
|
| 310 | + def accept_state_visitor(self, visitor: StateVisitor): |
| 311 | + visitor.visit(cloudwatch_backends) |
| 312 | + |
309 | 313 | def on_after_init(self): |
310 | 314 | ROUTER.add(PATH_GET_RAW_METRICS, self.get_raw_metrics) |
| 315 | + |
| 316 | + def on_before_start(self): |
311 | 317 | self.start_alarm_scheduler() |
312 | 318 |
|
313 | 319 | def on_before_state_reset(self): |
@@ -337,9 +343,10 @@ def start_alarm_scheduler(self): |
337 | 343 | self.alarm_scheduler = AlarmScheduler() |
338 | 344 |
|
339 | 345 | def shutdown_alarm_scheduler(self): |
340 | | - LOG.debug("stopping cloudwatch scheduler") |
341 | | - self.alarm_scheduler.shutdown_scheduler() |
342 | | - self.alarm_scheduler = None |
| 346 | + if self.alarm_scheduler: |
| 347 | + LOG.debug("stopping cloudwatch scheduler") |
| 348 | + self.alarm_scheduler.shutdown_scheduler() |
| 349 | + self.alarm_scheduler = None |
343 | 350 |
|
344 | 351 | def delete_alarms(self, context: RequestContext, alarm_names: AlarmNames, **kwargs) -> None: |
345 | 352 | moto.call_moto(context) |
|
0 commit comments