2 # -*- coding: utf-8 -*-
4 # This file is part of Karesansui Core.
6 # Copyright (C) 2010 HDE, Inc.
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License, or (at your option) any later version.
18 from karesansui.lib.const import GRAPH_COMMON_PARAM, DEFAULT_LANGS
19 from karesansui.lib.utils import is_readable, generate_phrase
21 def create_uptime_graph(_, lang, graph_dir, rrd_dir, start, end, dev=None, type=None):
22 graph_filename = "%s.png" % (generate_phrase(12,'abcdefghijklmnopqrstuvwxyz'))
23 graph_filepath = "%s/%s" % (graph_dir, graph_filename)
25 rrd_filepath = ("%s/uptime/uptime.rrd" % (rrd_dir),
28 for filepath in rrd_filepath:
29 if is_readable(filepath) is False:
32 legend_header_label = {"last":_('Last'),
35 for key in legend_header_label.keys():
36 if re.search(u"[^a-zA-Z0-9]", legend_header_label[key]):
37 legend_header_label[key] = "</tt>%s<tt>" % (legend_header_label[key].encode("utf-8"))
39 legend_header_label[key] = " %s" % (legend_header_label[key].encode("utf-8"))
41 legend_header = "<tt> %s</tt>" % (legend_header_label['last'])
45 legend_label = {"uptime":_('uptime'),
51 for key in legend_label.keys():
52 if re.search(u"[^a-zA-Z0-9]", legend_label[key]):
53 legend_label[key] = "</tt>%s<tt>" % (legend_label[key].encode("utf-8"))
55 legend_label[key] = "%s" % (legend_label[key].encode("utf-8"))
60 if re.search(u"[^a-zA-Z0-9_\-\.]", title):
61 title = "%s" % (title.encode("utf-8"))
63 title = "<tt>%s</tt>" % (title.encode("utf-8"))
65 created_label = _('Graph created')
66 if re.search(u"[^a-zA-Z0-9 ]", created_label):
67 created_label = "</tt>%s<tt>" % (created_label.encode("utf-8"))
69 created_label = "%s" % (created_label.encode("utf-8"))
71 created_time = "%s" % (datetime.datetime.today().strftime(DEFAULT_LANGS[lang]['DATE_FORMAT'][1]))
72 created_time = re.sub(r':', '\:', created_time)
74 legend_footer = "<tt>%s \: %s</tt>" % (created_label, created_time)
76 data = rrdtool.graph(graph_filepath,
81 "--vertical-label", _('Days').encode("utf-8"),
87 "--legend-direction", "bottomup",
88 "DEF:uptime=%s:value:AVERAGE" % (rrd_filepath[0]),
89 "CDEF:day=uptime,86400,/",
90 "CDEF:hour=uptime,86400,%,3600,/",
91 "CDEF:minute=uptime,3600,%,60,/",
92 "COMMENT:%s\\r" % legend_footer,
93 "COMMENT:<tt>---------------------------------------------------------------------------</tt>\\n",
94 "AREA:day#80AA00:<tt>%s </tt>" % (legend_label["uptime"]),
95 "GPRINT:day:LAST:<tt>%%6.0lf %s</tt>" % (legend_label["day"]),
96 "GPRINT:hour:LAST:<tt>%%2.0lf %s</tt>" % (legend_label["hour"]),
97 "GPRINT:minute:LAST:<tt>%%2.0lf %s</tt>\\n" % (legend_label["minute"]),
98 "COMMENT:%s\\n" % (legend_header),
102 return graph_filepath