Read all field (not only first day)

This commit is contained in:
Alban Bronisz 2021-03-03 20:22:47 +01:00
parent e5a1948f59
commit 7b9936334c

View File

@ -21,10 +21,24 @@ def parse_args():
return args.stats, args.web return args.stats, args.web
def extract_names(data: list):
names = set()
for d in data:
for field in d:
name = name_from_field(field)
names.update([name])
return names
def name_from_field(field: str) -> str : def name_from_field(field: str) -> str :
if field.startswith("onlyoffice-"): if field.startswith("onlyoffice-"):
return "onlyoffice" return "onlyoffice"
return field.split("_")[0] name = field.split("_")[0]
name = name.replace("org-caracals-", "")
name = name.replace(".caracals.org", "")
return name
def main(): def main():
stats_fn, web_render = parse_args() stats_fn, web_render = parse_args()
@ -37,23 +51,27 @@ def load_data(stats_fn: str):
with open(stats_fn) as stats_f: with open(stats_fn) as stats_f:
data = json.load(stats_f) data = json.load(stats_f)
data_dict = {name_from_field(field): [0]*len(data) for field in data[0]} data_dict = {name_from_field(field): [0]*len(data) for field in extract_names(data)}
print("Found", len(data), "points")
print("Found", len(data), "points")
print(" keys:", data_dict.keys())
for t_i, stat in enumerate(data): for t_i, stat in enumerate(data):
for field in stat: for field in stat:
if field == "date": # date if field == "date": # date
data_dict[field][t_i] = datetime.strptime(stat[field], "%Y-%m-%dT%H:%M:%S%z") date_ = stat[field].replace("+01:00", "+0000")
data_dict[field][t_i] = datetime.strptime(date_, "%Y-%m-%dT%H:%M:%S%z")
else: # float else: # float
value = stat[field].split(" ")[0] value = stat[field].split(" ")[0]
value = value.replace("MiB", "e3") value = value.replace("MiB", "e3")
value = value.replace("GiB", "e6")
data_dict[name_from_field(field)][t_i] += float(value) / 1000 # values are in MiB data_dict[name_from_field(field)][t_i] += float(value) / 1000 # values are in MiB
return data_dict return data_dict
def render(data: dict, web_render:bool=False): def render(data: dict, web_render:bool=False):
bar_chart = pygal.StackedBar(height=400, legend_box_size=5, x_label_rotation=25) style = pygal.style.Style(value_label_font_size=5, value_font_size=5, label_font_size=5, legend_font_size=5)
bar_chart = pygal.StackedBar(height=400, x_label_rotation=25, style=style, legend_box_size=5)
labels = [d.strftime("%B %d %H:%M") for d in data["date"]] labels = [d.strftime("%B %d %H:%M") for d in data["date"]]
bar_chart.x_labels = labels bar_chart.x_labels = labels
for k in data: for k in data: