diff --git a/.gitattributes b/.gitattributes index 9351202a62521c71ed19263d77ace10f3b1ddcb8..312a2c5f0d9d53c78d6fe750b0aaca66c896cf4f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5124,6 +5124,8 @@ SAS/ResourceAssignment/ResourceAssignmentEditor/test/test_webservice.run -text SAS/ResourceAssignment/ResourceAssignmentEditor/test/test_webservice.sh -text SAS/ResourceAssignment/ResourceAssignmentEstimator/CMakeLists.txt -text SAS/ResourceAssignment/ResourceAssignmentEstimator/__init__.py -text +SAS/ResourceAssignment/ResourceAssignmentEstimator/config.py -text +SAS/ResourceAssignment/ResourceAssignmentEstimator/raestimatorservice.ini -text SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/CMakeLists.txt -text SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/__init__.py -text SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/base_resource_estimator.py -text diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/CMakeLists.txt b/SAS/ResourceAssignment/ResourceAssignmentEstimator/CMakeLists.txt index 80f77602ac6cefd555920f952879bdc9d46b3750..ea2d8d4c8ddff636568439f305c1cf1967cd31de 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEstimator/CMakeLists.txt +++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/CMakeLists.txt @@ -1,6 +1,6 @@ # $Id: CMakeLists.txt $ -lofar_package(ResourceAssignmentEstimator 1.0 DEPENDS PyMessaging) +lofar_package(ResourceAssignmentEstimator 1.0 DEPENDS PyMessaging PyCommon pyparameterset) lofar_find_package(Python 2.6 REQUIRED) include(PythonInstall) @@ -8,9 +8,17 @@ include(PythonInstall) set(_py_files __init__.py service.py + config.py ) python_install(${_py_files} DESTINATION lofar/sas/resourceassignment/resourceassignmentestimator) +lofar_add_bin_scripts(raestimatorservice) + +# supervisord config files +install(FILES + raestimatorservice.ini + DESTINATION etc/supervisord.d) + add_subdirectory(test) add_subdirectory(resource_estimators) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/config.py b/SAS/ResourceAssignment/ResourceAssignmentEstimator/config.py new file mode 100644 index 0000000000000000000000000000000000000000..fa39d8db77108f72fd79859b4665776a6dcf4c4a --- /dev/null +++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/config.py @@ -0,0 +1,6 @@ +#!/usr/bin/python +# $Id$ + +DEFAULT_BUSNAME = 'lofar.ra.command' +DEFAULT_SERVICENAME = 'ResourceEstimation' + diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/raestimatorservice.ini b/SAS/ResourceAssignment/ResourceAssignmentEstimator/raestimatorservice.ini new file mode 100644 index 0000000000000000000000000000000000000000..49a714aedeb4fafed6080c9da073231659805838 --- /dev/null +++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/raestimatorservice.ini @@ -0,0 +1,8 @@ +[program:raestimatorservice] +command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;raestimatorservice' +user=lofarsys +stopsignal=INT ; KeyboardInterrupt +stopasgroup=true ; bash does not propagate signals +stdout_logfile=%(program_name)s.log +redirect_stderr=true +stderr_logfile=NONE diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/CMakeLists.txt b/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/CMakeLists.txt index 6da3a53d3097860413decddfa0f943d8105cc1e6..fef9a42fa2e4d43ae575053eaec3bfdbc98e81e4 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/CMakeLists.txt +++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/CMakeLists.txt @@ -8,6 +8,7 @@ set(_py_files calibration_pipeline.py image_pipeline.py pulsar_pipeline.py + parameterset.py ) python_install(${_py_files} DESTINATION lofar/sas/resourceassignment/resourceassignmentestimator/resource_estimators) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/__init__.py b/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/__init__.py index 326fee9b4365a20bd31a63cf01b6097d4950ca79..1fe0939db5a57f672ad2b5c4a524563b4c16c3b5 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/__init__.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/resource_estimators/__init__.py @@ -1,7 +1,7 @@ """ resource_estimators __init__() """ -from parameterset import Parameterset +from parameterset import ParameterSet from observation import ObservationResourceEstimator from longbaseline_pipeline import LongBaselinePipelineResourceEstimator from calibration_pipeline import CalibrationPipelineResourceEstimator diff --git a/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py b/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py index aab690b2c562a772d28fb26eb39cd2599e84b8b2..a1d98957d21f1ead0f0b7abdd01466df350fd62c 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEstimator/service.py @@ -8,14 +8,12 @@ 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 * +from lofar.sas.resourceassignment.resourceassignmentestimator.config import DEFAULT_BUSNAME, DEFAULT_SERVICENAME -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) @@ -45,14 +43,32 @@ class ResourceEstimatorHandler(MessageHandlerInterface): return result -def createService(busname='lofarbus'): - return Service('ResourceEstimation', - ResourceEstimatorHandler, +def createService(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME, broker=None): + return Service(servicename=servicename, + servicehandler=ResourceEstimatorHandler, busname=busname, - numthreads=1) + broker=broker, + numthreads=4) def main(): - with createService(busname='lofarbus'): + from optparse import OptionParser + from lofar.messaging import setQpidLogLevel + from lofar.common.util import waitForInterrupt + + # Check the invocation arguments + parser = OptionParser("%prog [options]", + description='runs the resourceassigner service') + parser.add_option('-q', '--broker', dest='broker', type='string', default=None, help='Address of the qpid broker, default: localhost') + parser.add_option("-b", "--busname", dest="busname", type="string", default=DEFAULT_BUSNAME, help="Name of the bus exchange on the qpid broker, default: %s" % DEFAULT_BUSNAME) + parser.add_option("-s", "--servicename", dest="servicename", type="string", default=DEFAULT_SERVICENAME, help="Name for this service, default: %s" % DEFAULT_SERVICENAME) + parser.add_option('-V', '--verbose', dest='verbose', action='store_true', help='verbose logging') + (options, args) = parser.parse_args() + + setQpidLogLevel(logging.INFO) + logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', + level=logging.DEBUG if options.verbose else logging.INFO) + + with createService(busname=options.busname, servicename=options.servicename, broker=options.broker): waitForInterrupt() if __name__ == '__main__':