X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ff56222d3f589a0c33ec7b06e092e7481bbdf1e5..bdcf09e34f8eec88e1e326094ac60b5d484844e1:/tools/crunchstat-summary/crunchstat_summary/webchart.py diff --git a/tools/crunchstat-summary/crunchstat_summary/webchart.py b/tools/crunchstat-summary/crunchstat_summary/webchart.py index 790b08da87..31afcf64e9 100644 --- a/tools/crunchstat-summary/crunchstat_summary/webchart.py +++ b/tools/crunchstat-summary/crunchstat_summary/webchart.py @@ -2,7 +2,11 @@ # # SPDX-License-Identifier: AGPL-3.0 -import cgi +try: + from html import escape +except ImportError: + from cgi import escape + import json import pkg_resources @@ -10,7 +14,7 @@ import pkg_resources class WebChart(object): """Base class for a web chart. - Subclasses must assign JSLIB and JSASSET, and override the + Subclasses must assign JSLIB and JSASSETS, and override the chartdata() method. """ JSLIB = None @@ -27,13 +31,13 @@ class WebChart(object): {} - '''.format(cgi.escape(self.label), + '''.format(escape(self.label), self.JSLIB, self.js(), self.headHTML()) def js(self): return 'var chartdata = {};\n{}'.format( json.dumps(self.sections()), - pkg_resources.resource_string('crunchstat_summary', self.JSASSET)) + '\n'.join([pkg_resources.resource_string('crunchstat_summary', jsa).decode('utf-8') for jsa in self.JSASSETS])) def sections(self): return [ @@ -41,10 +45,13 @@ class WebChart(object): 'label': s.long_label(), 'charts': [ self.chartdata(s.label, s.tasks, stat) - for stat in (('cpu', 'user+sys__rate'), - ('mem', 'rss'), - ('net:eth0', 'tx+rx__rate'), - ('net:keep0', 'tx+rx__rate'))], + for stat in (('cpu', ['user+sys__rate', 'user__rate', 'sys__rate']), + ('mem', ['rss']), + ('net:eth0', ['tx+rx__rate','rx__rate','tx__rate']), + ('net:keep0', ['tx+rx__rate','rx__rate','tx__rate']), + ('statfs', ['used', 'total']), + ) + ], } for s in self.summarizers]