#!/usr/bin/env python # $Id: service.py $ ''' Simple Service listening ''' import logging from lofar.messaging import Service from lofar.messaging.Service import MessageHandlerInterface from lofar.common.util import waitForInterrupt from lofar.sas.resourceassignment.resourceassignmentestimator.resource_estimators import * logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) class ResourceEstimatorHandler(MessageHandlerInterface): def __init__(self, **kwargs): super(ResourceEstimatorHandler, self).__init__(**kwargs) self.service2MethodMap = {'ResourceEstimation': self._get_estimated_resources} def _get_estimated_resources(self): result = {} observation = ObservationResourceEstimator(self.kwargs) result.update(observation.result_as_dict()) pipeline_input_files = result['observation']['output_files'] longbaseline = LongBaselinePipelineResourceEstimator(self.kwargs, input_files=pipeline_input_files) result.update(longbaseline.result_as_dict()) calibration = CalibrationPipelineResourceEstimator(self.kwargs, input_files=pipeline_input_files) result.update(calibration.result_as_dict()) pulsar = PulsarPipelineResourceEstimator(self.kwargs, input_files=pipeline_input_files) result.update(pulsar.result_as_dict()) image = ImagePipelineResourceEstimator(self.kwargs, input_files=pipeline_input_files) result.update(image.result_as_dict) return result def createService(busname='lofarbus'): return Service('ResourceEstimation', ResourceEstimatorHandler, busname=busname, numthreads=1) def main(): with createService(busname='lofarbus'): waitForInterrupt() if __name__ == '__main__': main()