Skip to content

Commit a657d3f

Browse files
committed
fix: implemented streamToClient
1 parent 82969a4 commit a657d3f

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

src/DIRAC/MonitoringSystem/Service/MonitoringHandler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def transfer_toClient(self, fileId, token, fileHelper):
132132
fileHelper.sendEOF()
133133
return S_OK()
134134

135-
def __generatePlotFromFileId(self, fileId):
135+
def _generatePlotFromFileId(self, fileId):
136136
"""
137137
It create the plots using the encode parameters
138138

src/DIRAC/MonitoringSystem/Service/TornadoMonitoringHandler.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
:caption: Monitoring options
88
99
"""
10-
from DIRAC import gLogger
10+
from base64 import b64encode
11+
12+
from DIRAC import gLogger, S_OK, S_ERROR
1113
from DIRAC.Core.Tornado.Server.TornadoService import TornadoService
14+
from DIRAC.Core.Utilities.Plotting import gDataCache
15+
from DIRAC.Core.Utilities.Plotting.Plots import generateErrorMessagePlot
1216
from DIRAC.MonitoringSystem.Service.MonitoringHandler import MonitoringHandlerMixin
1317

1418

@@ -17,3 +21,29 @@
1721

1822
class TornadoMonitoringHandler(MonitoringHandlerMixin, TornadoService):
1923
log = sLog
24+
25+
types_streamToClient = []
26+
27+
def export_streamToClient(self, fileId):
28+
"""
29+
Get graphs data
30+
31+
:param str fileId: encoded plot attributes
32+
"""
33+
34+
# First check if we've got to generate the plot
35+
if len(fileId) > 5 and fileId[1] == ":":
36+
self.log.info("Seems the file request is a plot generation request!")
37+
try:
38+
result = self._generatePlotFromFileId(fileId)
39+
except Exception as e: # pylint: disable=broad-except
40+
self.log.exception("Exception while generating plot", str(e))
41+
result = S_ERROR("Error while generating plot: %s" % str(e))
42+
if not result["OK"]:
43+
return S_OK(b64encode(generateErrorMessagePlot(result["Message"])).decode())
44+
fileId = result["Value"]
45+
46+
retVal = gDataCache.getPlotData(fileId)
47+
if not retVal["OK"]:
48+
return S_OK(b64encode(generateErrorMessagePlot(result["Message"])).decode())
49+
return S_OK(b64encode(retVal["Value"]).decode())

0 commit comments

Comments
 (0)