agent
This commit is contained in:
40
agent/app/core/service_manager.py
Normal file
40
agent/app/core/service_manager.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from app.core.command_runner import CommandRunner
|
||||
|
||||
|
||||
class ServiceManager:
|
||||
def __init__(self, command_runner: CommandRunner) -> None:
|
||||
self.command_runner = command_runner
|
||||
|
||||
def enable_service(self, service_name: str) -> None:
|
||||
self.command_runner.run(["systemctl", "enable", service_name])
|
||||
|
||||
def disable_service(self, service_name: str) -> None:
|
||||
self.command_runner.run(["systemctl", "disable", service_name])
|
||||
|
||||
def start_service(self, service_name: str) -> None:
|
||||
self.command_runner.run(["systemctl", "start", service_name])
|
||||
|
||||
def stop_service(self, service_name: str) -> None:
|
||||
self.command_runner.run(["systemctl", "stop", service_name])
|
||||
|
||||
def restart_service(self, service_name: str) -> None:
|
||||
self.command_runner.run(["systemctl", "restart", service_name])
|
||||
|
||||
def get_service_status(self, service_name: str) -> dict[str, object]:
|
||||
active = self._query(["systemctl", "is-active", service_name]) == "active"
|
||||
enabled = self._query(["systemctl", "is-enabled", service_name]) == "enabled"
|
||||
return {
|
||||
"serviceName": service_name,
|
||||
"active": active,
|
||||
"enabled": enabled,
|
||||
"status": "running" if active else "stopped",
|
||||
}
|
||||
|
||||
def _query(self, command: list[str]) -> str:
|
||||
try:
|
||||
return self.command_runner.run(command).stdout.strip()
|
||||
except Exception:
|
||||
return "unknown"
|
||||
|
||||
Reference in New Issue
Block a user