selfprivacy-rest-api/selfprivacy_api/services/generic_status_getter.py

29 lines
1 KiB
Python
Raw Normal View History

2022-08-10 23:36:36 +00:00
"""Generic service status fetcher using systemctl"""
import subprocess
from selfprivacy_api.services.service import ServiceStatus
def get_service_status(service: str) -> ServiceStatus:
"""
Return service status from systemd.
Use systemctl show to get the status of a service.
Get ActiveState from the output.
2022-08-10 23:36:36 +00:00
"""
service_status = subprocess.check_output(["systemctl", "show", service])
if b"LoadState=not-found" in service_status:
2022-08-10 23:36:36 +00:00
return ServiceStatus.OFF
if b"ActiveState=active" in service_status:
return ServiceStatus.ACTIVE
if b"ActiveState=inactive" in service_status:
return ServiceStatus.INACTIVE
if b"ActiveState=activating" in service_status:
return ServiceStatus.ACTIVATING
if b"ActiveState=deactivating" in service_status:
return ServiceStatus.DEACTIVATING
if b"ActiveState=failed" in service_status:
return ServiceStatus.FAILED
if b"ActiveState=reloading" in service_status:
return ServiceStatus.RELOADING
return ServiceStatus.OFF