mirror of
https://github.com/akuker/RASCSI.git
synced 2024-11-23 08:31:05 +00:00
Make the restart rascsi service endpoint actually check for systemd s… (#487)
* Make the restart rascsi service endpoint actually check for systemd service status before doing anything. Introduced error handling and more verbose messages. * Cleanup
This commit is contained in:
parent
7818552ca9
commit
a2af7623af
@ -11,10 +11,15 @@ from settings import AUTH_GROUP
|
|||||||
def systemd_service(service, action):
|
def systemd_service(service, action):
|
||||||
"""
|
"""
|
||||||
Takes (str) service and (str) action
|
Takes (str) service and (str) action
|
||||||
Action can be one of start/stop/restart
|
Action can be any that systemctl supports, ex. start/stop/restart/show
|
||||||
|
Returns (dict) with (bool) status, (str) msg, (str) err
|
||||||
"""
|
"""
|
||||||
proc = asyncio.run(run_async("sudo /bin/systemctl {action} {service}"))
|
proc = asyncio.run(run_async(f"sudo /bin/systemctl {action} {service}"))
|
||||||
return proc["returncode"] == 0
|
return {
|
||||||
|
"status": proc["returncode"] == 0,
|
||||||
|
"msg": proc["stdout"],
|
||||||
|
"err": proc["stderr"],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def reboot_pi():
|
def reboot_pi():
|
||||||
|
@ -717,11 +717,30 @@ def rascsi_restart():
|
|||||||
flash(auth["msg"], "error")
|
flash(auth["msg"], "error")
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
|
|
||||||
detach_all()
|
service = "rascsi.service"
|
||||||
flash("Safely detached all devices.")
|
monitor_service = "monitor_rascsi.service"
|
||||||
flash("Restarting RaSCSI Service...")
|
rascsi_status = systemd_service(service, "show")
|
||||||
systemd_service("rascsi.service", "restart")
|
if rascsi_status["status"] and "ActiveState=active" not in rascsi_status["msg"]:
|
||||||
systemd_service("monitor_rascsi.service", "restart")
|
flash(
|
||||||
|
f"Failed to restart {service} because it is inactive. "
|
||||||
|
"You are probably running RaSCSI as a regular process.", "error"
|
||||||
|
)
|
||||||
|
return redirect(url_for("index"))
|
||||||
|
|
||||||
|
monitor_status = systemd_service(monitor_service, "show")
|
||||||
|
restart_proc = systemd_service(service, "restart")
|
||||||
|
if restart_proc["status"]:
|
||||||
|
flash(f"Restarted {service}")
|
||||||
|
restart_monitor = systemd_service(monitor_service, "restart")
|
||||||
|
if restart_monitor["status"] and "ActiveState=active" in monitor_status["msg"]:
|
||||||
|
flash(f"Restarted {monitor_service}")
|
||||||
|
elif not restart_monitor["status"] and "ActiveState=active" in monitor_status["msg"]:
|
||||||
|
flash(f"Failed to restart {monitor_service}:", "error")
|
||||||
|
return redirect(url_for("index"))
|
||||||
|
|
||||||
|
restart_monitor = systemd_service("monitor_rascsi.service", "restart")
|
||||||
|
flash(f"Failed to restart {service}:", "error")
|
||||||
|
flash(restart_proc["err"], "error")
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user