Skip to content
Snippets Groups Projects
experimentRouteDescriptor.py 4.4 KiB
Newer Older
# Experiment route descriptor.
#

from dm.common.utility.configurationManager import ConfigurationManager
from experimentSessionController import ExperimentSessionController

class ExperimentRouteDescriptor:

    @classmethod
    def getRoutes(cls):
        contextRoot = ConfigurationManager.getInstance().getContextRoot()

        # Static instances shared between different routes
        experimentSessionController = ExperimentSessionController()

        # Define routes.
        routes = [

            # Get experiment types
            {
                'name' : 'getExperimentTypes',
                'path' : '%s/experimentTypes' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'getExperimentTypes',
                'method' : ['GET']
            },

            # Get experiment type by id
            {
                'name' : 'getExperimentTypeById',
                'path' : '%s/experimentTypesById/:(id)' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'getExperimentTypeById',
                'method' : ['GET']
            },

            # Get experiments
            {
                'name' : 'getExperiments',
                'path' : '%s/experiments' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'getExperiments',
                'method' : ['GET']
            },

            # Get experiments by station
            {
                'name' : 'getExperimentsByStation',
                'path' : '%s/experimentsByStation/:(stationName)' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'getExperimentsByStation',
                'method' : ['GET']
            },

            # Get experiment
            {
                'name' : 'getExperimentById',
                'path' : '%s/experimentsById/:(id)' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'getExperimentById',
                'method' : ['GET']
            },

            # Get experiment
            {
                'name' : 'getExperimentByName',
                'path' : '%s/experimentsByName/:(name)' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'getExperimentByName',
                'method' : ['GET']
            },

            # Add experiment
            {
                'name' : 'addExperiment',
                'path' : '%s/experiments' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'addExperiment',
                'method' : ['POST']
            },

            # Start experiment
            {
                'name' : 'startExperiment',
                'path' : '%s/experiments/start' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'startExperiment',
                'method' : ['PUT']
            },

            # Update experiment
            {
                'name' : 'updateExperiment',
                'path' : '%s/experiments/update' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'updateExperiment',
                'method' : ['PUT']
            },

            # Stop experiment
            {
                'name' : 'stopExperiment',
                'path' : '%s/experiments/stop' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'stopExperiment',
                'method' : ['PUT']
            },

            # Authorize download for a given UNIX username
            {
                'name' : 'authorizeDownload',
                'path' : '%s/downloadAuthorizations/:(username)/:(experimentName)' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'authorizeDownload',
                'method' : ['POST']
            },

            # Revoke authorization download for a given UNIX username
            {
                'name' : 'deauthorizeDownload',
                'path' : '%s/downloadAuthorizations/:(username)/:(experimentName)' % contextRoot,
                'controller' : experimentSessionController,
                'action' : 'deauthorizeDownload',
                'method' : ['DELETE']
            },