|
|
@@ -1,44 +0,0 @@ |
|
|
|
from datetime import datetime |
|
|
|
import os |
|
|
|
import re |
|
|
|
from shlex import split |
|
|
|
from subprocess import check_output, CalledProcessError, STDOUT |
|
|
|
|
|
|
|
os.environ["SGE_ROOT"] = "/sge/GE" |
|
|
|
|
|
|
|
def collect_status_info(context): |
|
|
|
try: |
|
|
|
result = str(check_output(split("qstat -j earwigbot"), stderr=STDOUT)) |
|
|
|
except CalledProcessError: |
|
|
|
return ["offline", None, None, None] |
|
|
|
|
|
|
|
if result.startswith("Following jobs do not exist:"): |
|
|
|
return ["offline", None, None, None] |
|
|
|
|
|
|
|
lines = result.splitlines()[1:] |
|
|
|
data = {} |
|
|
|
for line in lines: |
|
|
|
re_key = re.match(r"(.*?):\s", line) |
|
|
|
re_val = re.search(r":\s*(.*?)$", line) |
|
|
|
if re_key and re_val: |
|
|
|
data[re_key.group(1)] = re_val |
|
|
|
since, uptime = _format_date(data["submission_time"]) |
|
|
|
host = data["sge_o_host"] |
|
|
|
return ["online", since, uptime, host] |
|
|
|
|
|
|
|
def _format_date(time): |
|
|
|
start = datetime.strptime(time, "%a %b %d %H:%M:%S %Y") |
|
|
|
since = start.strftime("%b %d, %Y %H:%M:%S UTC") |
|
|
|
diff = (datetime.utcnow() - start) |
|
|
|
if diff.days: |
|
|
|
uptime = "{0} days".format(diff.days) |
|
|
|
if diff.seconds >= 3600: |
|
|
|
uptime += ", {0} hours".format(diff.seconds / 3600) |
|
|
|
else: |
|
|
|
if diff.seconds > 3600: |
|
|
|
uptime = "{0} hours".format(diff.seconds / 3600) |
|
|
|
elif diff.seconds > 60: |
|
|
|
uptime = "{0} minutes".format(diff.seconds / 60) |
|
|
|
else: |
|
|
|
uptime = "{0} seconds".format(diff.seconds) |
|
|
|
return (since, uptime) |