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
« prev ^ index » next coverage.py v7.13.5, created at 2026-07-02 18:13 +0530
1from typing import Annotated
3import typer
4from typer_examples import example
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
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
33 if not services_manager.is_service_running(service.value):
34 output.print(f"Skipping not running service {service.value}")
35 continue
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}")