Error handling in subprocess run (#516)

This commit is contained in:
Daniel Markstedt 2021-12-12 09:13:19 -08:00 committed by GitHub
parent 0abbff200e
commit aa0e5a287b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -44,6 +44,7 @@ def running_env():
git contains the git hash of the checked out code
env is the various system information where this app is running
"""
try:
ra_git_version = (
subprocess.run(
["git", "rev-parse", "HEAD"],
@ -53,6 +54,12 @@ def running_env():
.stdout.decode("utf-8")
.strip()
)
except subprocess.CalledProcessError as error:
logging.warning("Executed shell command: %s", " ".join(error.cmd))
logging.warning("Got error: %s", error.stderr.decode("utf-8"))
ra_git_version = ""
try:
pi_version = (
subprocess.run(
["uname", "-a"],
@ -62,6 +69,11 @@ def running_env():
.stdout.decode("utf-8")
.strip()
)
except subprocess.CalledProcessError as error:
logging.warning("Executed shell command: %s", " ".join(error.cmd))
logging.warning("Got error: %s", error.stderr.decode("utf-8"))
pi_version = "Unknown"
return {"git": ra_git_version, "env": pi_version}
@ -70,28 +82,46 @@ def running_proc(daemon):
Takes (str) daemon
Returns (int) proc, which is the number of processes currently running
"""
process = subprocess.run(
try:
processes = (
subprocess.run(
["ps", "aux"],
capture_output=True,
check=True,
)
output = process.stdout.decode("utf-8")
.stdout.decode("utf-8")
.strip()
)
except subprocess.CalledProcessError as error:
logging.warning("Executed shell command: %s", " ".join(error.cmd))
logging.warning("Got error: %s", error.stderr.decode("utf-8"))
processes = ""
from re import findall
proc = findall(daemon, output)
return len(proc)
matching_processes = findall(daemon, processes)
return len(matching_processes)
def is_bridge_setup():
"""
Returns (bool) True if the rascsi_bridge network interface exists
"""
process = subprocess.run(
try:
bridges = (
subprocess.run(
["brctl", "show"],
capture_output=True,
check=True,
)
output = process.stdout.decode("utf-8")
if "rascsi_bridge" in output:
.stdout.decode("utf-8")
.strip()
)
except subprocess.CalledProcessError as error:
logging.warning("Executed shell command: %s", " ".join(error.cmd))
logging.warning("Got error: %s", error.stderr.decode("utf-8"))
bridges = ""
if "rascsi_bridge" in bridges:
return True
return False