Skip to content
Snippets Groups Projects
Commit ff4d017c authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

SW-533: added missing methods and event handlers during review

parent 50c4d6a8
Branches
Tags
No related merge requests found
......@@ -55,6 +55,10 @@ class TBBBusListener(AbstractBusListener):
self.onDataWritersStarted(msg.content)
elif msg.subject == '%sDataWritersFinished' % self.subject_prefix:
self.onDataWritersFinished(msg.content)
elif msg.subject == '%sDataWritersStopping' % self.subject_prefix:
self.onDataWritersStopping(msg.content)
elif msg.subject == '%sDataWritersStopped' % self.subject_prefix:
self.onDataWritersStopped(msg.content)
else:
logger.error("TBBBusListener.handleMessage: unknown subject: %s", msg.subject)
except Exception as e:
......@@ -86,6 +90,16 @@ class TBBBusListener(AbstractBusListener):
:param msg_content: dictionary with the info on which datawrited started on which host/port'''
pass
def onDataWritersStopping(self, msg_content):
'''onDataWritersStopping is called upon receiving a DataWritersStopping message.
:param msg_content: '''
pass
def onDataWritersStopped(self, msg_content):
'''onDataWritersStopped is called upon receiving a DataWritersStopped message.
:param msg_content: dictionary with the info on which datawrited Stopped on which host/port'''
pass
def main():
from lofar.common.util import waitForInterrupt
......
......@@ -20,6 +20,12 @@ class TBBRPC(RPCWrapper):
logger.info("Received start datawriter request result %s" % result)
return result
def stop_datawriters(self):
logger.info("Requesting stop of tbb data writers...")
result = self.rpc('stop_datawriters')
logger.info("Received stop datawriter request result %s" % result)
return result
def switch_firmware(self, stations, mode):
logger.info("Requesting switch of tbb firmware on stations '%s' to mode '%s' ..." % (stations, mode))
result = self.rpc('switch_firmware', stations, mode)
......
......@@ -250,7 +250,6 @@ class TBBControlService:
:param timeout: Timeout in seconds until data writers will be
forcefully killed. The default is 24 hours.
'''
self._send_event_message('WaitingForDataWriters', {})
start = datetime.utcnow()
while self.procs:
logger.info('waiting for %d datawriters to finish...', len(self.procs))
......@@ -268,7 +267,7 @@ class TBBControlService:
if datetime.utcnow() - start >= timeout:
logger.warning('timeout while waiting for %d more datawriters...', len(self.procs))
self.stop_datawriters()
self._send_event_message('WaitingForDataWritersFinished', {})
self._send_event_message('DataWritersFinished', {})
def stop_datawriters(self):
'''Stop TBB datawriters running on CEP4 and notify when done'''
......@@ -279,6 +278,11 @@ class TBBControlService:
del self.procs[node]
self._send_event_message('DataWritersStopped', {})
# also call 'normal' wait_for_datawriters method,
# which has no datawriter to wait for anymore...
# but as a result, it sends a 'DataWritersFinished' event.
self.wait_for_datawriters()
def switch_firmware(self, stations, mode):
"""
Command TBBs to switch to one of two firmwares: sub-band mode or raw voltage mode.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment