Coverage for frappe_manager / commands / services / stop.py: 39%

23 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-07-02 18:13 +0530

1from typing import Annotated 

2 

3import typer 

4from typer_examples import example 

5 

6from frappe_manager.output_manager import get_global_output_handler 

7from frappe_manager.services_manager import ServicesEnum 

8from frappe_manager.services_manager.services import ServicesManager 

9 

10 

11@example( 

12 "Stop global-db", 

13 "global-db", 

14 detail="Stops the global-db service. Use when maintaining or backing up the global database.", 

15) 

16@example( 

17 "Stop all services", 

18 "all", 

19 detail="Stops all global services managed by FM.", 

20) 

21def stop_services( 

22 ctx: typer.Context, 

23 service_name: Annotated[ServicesEnum, typer.Argument(help="Name of the service.")], 

24): 

25 """Stops global services.""" 

26 services_manager: ServicesManager = ctx.obj["services"] 

27 output = get_global_output_handler() 

28 if service_name.value == ServicesEnum.all: 

29 for service in ServicesEnum: 

30 if service == ServicesEnum.all: 

31 continue 

32 

33 if not services_manager.is_service_running(service.value): 

34 output.print(f"Skipping not running service {service.value}") 

35 continue 

36 

37 services_manager.stop_service(services=[service.value]) 

38 output.print(f"Stopped service {service.value}") 

39 elif services_manager.is_service_running(service_name.value): 

40 services_manager.stop_service(services=[service_name.value]) 

41 else: 

42 output.print(f"Skipping already stopped service {service_name.value}")