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

TMSS-557: Added cmdline option for rest client creds id and broker

parent b18fb324
No related branches found
No related tags found
1 merge request!343Resolve TMSS-557 and TMSS-307
[program:tmss_subtask_scheduling_service]
command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;exec tmss_subtask_scheduling_service'
[program:tmss_feedback_handling_service]
command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;exec tmss_feedback_handling_service -R TMSS_testenv_client'
user=lofarsys
stopsignal=INT ; KeyboardInterrupt
stopasgroup=true ; bash does not propagate signals
......
......@@ -44,15 +44,18 @@ class TMSSFeedbackListener:
threads = []
exchanges = ["otdb.task.feedback.processing", "otdb.task.feedback.dataproducts"]
def __init__(self, rest_client_creds_id: str="TMSSClient", qpid_broker: str=broker_feedback) -> None:
super().__init__()
self._tmss_client = TMSSsession.create_from_dbcreds_for_ldap(rest_client_creds_id)
self._qpid_broker = qpid_broker
def append_feedback_to_tmss_subtask_raw_feedback(self, subtask_id: int, raw_feedback: str):
logger.info('Appending feedback to TMSS subtask %s' % subtask_id)
with TMSSsession.create_from_dbcreds_for_ldap() as session:
session.append_to_subtask_raw_feedback(subtask_id, raw_feedback)
self._tmss_client.append_to_subtask_raw_feedback(subtask_id, raw_feedback)
def process_subtask_feedback_and_set_finished(self, subtask_id: int):
logger.info('Calling TMSS to process feedback of subtask %s' % subtask_id)
with TMSSsession.create_from_dbcreds_for_ldap() as session:
session.process_subtask_feedback_and_set_finished(subtask_id)
self._tmss_client.process_subtask_feedback_and_set_finished(subtask_id)
def __enter__(self):
self.start_handling()
......@@ -62,10 +65,11 @@ class TMSSFeedbackListener:
self.stop_handling()
def start_handling(self):
self._tmss_client.open()
def listen(ex):
fbus = FromBus(ex, broker=broker_feedback)
logger.info('Start listening on exchange=%s broker=%s' % (ex, broker_feedback))
fbus = FromBus(ex, broker=self._qpid_broker)
logger.info('Start listening on exchange=%s broker=%s' % (ex, self._qpid_broker))
while not self.stop_listening:
try:
# get message from messagebus
......@@ -89,7 +93,7 @@ class TMSSFeedbackListener:
pass
except Exception as e:
logger.error(str(e))
logger.info('Stopped listening on exchange=%s broker=%s' % (ex, broker_feedback))
logger.info('Stopped listening on exchange=%s broker=%s' % (ex, self._qpid_broker))
for exchange in self.exchanges:
thread = threading.Thread(target=listen, name=exchange, args=(exchange,))
......@@ -101,12 +105,30 @@ class TMSSFeedbackListener:
while self.threads:
thread = self.threads.pop()
thread.join(5)
self._tmss_client.close()
def main():
logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
from optparse import OptionParser, OptionGroup
# Check the invocation arguments
parser = OptionParser('%prog [options]',
description='run the tmss_feedback_handling_service which relays observation feedback from the old QPID messaging system into TMSS.')
group = OptionGroup(parser, 'QPID Messaging options',
description="This feedback service connects to the (old and almost obsolete) QPID broker. This can and should be replaced by connecting to RabbitMQ when Cobalt and MAC have been adapted.")
group.add_option('-q', '--qpid_broker', dest='qpid_broker', type='string', default=broker_feedback, help='Address of the QPID broker, default: %default')
parser.add_option_group(group)
group = OptionGroup(parser, 'Django options')
parser.add_option_group(group)
group.add_option('-R', '--rest_credentials', dest='rest_credentials', type='string', default='TMSSClient', help='django REST API credentials name, default: %default')
(options, args) = parser.parse_args()
from lofar.common.util import waitForInterrupt
with TMSSFeedbackListener():
with TMSSFeedbackListener(rest_client_creds_id=options.rest_credentials, qpid_broker=options.qpid_broker):
waitForInterrupt()
if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment