Page MenuHomec4science

display.py
No OneTemporary

File Metadata

Created
Wed, Sep 25, 15:55

display.py

import json
from jinja2 import Environment, FileSystemLoader
class Display(object):
def __init__(self, data, total):
self.data = data
self.total = total
self.fields = {
"account": "Account",
"user": "Username",
"cluster": "Cluster",
"time": "CPU/GPU-hrs",
"carbon": "kg.eCO²",
"money": "CHF",
"start": "Start",
"end": "End",
"count": "Number of jobs",
}
self.raw = self.data
self.header = {}
if self.data is not None:
self.type = self.data["type"]
for i in list(self.data.keys()):
if i in self.fields:
self.header[i] = self.data[i]
self.data = self.data["metrics"]
def __str__(self):
pre = json.dumps(self.raw, indent=2)
# pre = json.dumps(self.data, indent=4)
# return f"ploalp"
return f"{pre}"
def get_table(self, fields=None):
res = []
if self.data is None:
print("No result !")
return res
# if no fields selected get them all
if fields is None:
temp = {
i: self.fields[i] if i in self.fields else None
for i in list(self.header.keys()) + list(self.data[0].keys())
}
for key, value in dict(temp).items():
if value is None:
del temp[key]
res.append(temp)
for block in self.data:
res.append(dict(self.header, **block))
return res
def get_motd(self, carbon=False):
if self.data is None:
print("No result !")
return
file_loader = FileSystemLoader("/etc/sausage/")
env = Environment(loader=file_loader)
env.trim_blocks = True
env.lstrip_blocks = True
env.rstrip_blocks = True
template = env.get_template("sausage.template.j2")
output = template.render(
data=self.data,
total=self.total,
header=self.header,
fields_name=self.fields,
type=self.type,
carbon=carbon,
)
print(output)

Event Timeline