Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • DM/dm-docs
  • hammonds/dm-docs
  • hparraga/dm-docs
3 results
Show changes
#!/usr/bin/env python
#######################################################################
import socket
import pwd
import os
from logging.handlers import TimedRotatingFileHandler
#######################################################################
class TimedRotatingFileLoggingHandler(TimedRotatingFileHandler):
""" Class that enables logging into files. """
def __init__(self, filename, when='D', interval=1, backupCount=0, encoding=None):
TimedRotatingFileHandler.__init__(self, filename, when, interval, backupCount, encoding)
self._user = pwd.getpwuid(os.getuid())[0]
self._host = socket.gethostname()
def emit(self, record):
record.__dict__['user'] = self._user
record.__dict__['host'] = self._host
return TimedRotatingFileHandler.emit(self, record)
#######################################################################
# Testing.
if __name__ == '__main__':
pass
#!/usr/bin/env python
#
# Implementation for file system controller.
#
#######################################################################
import threading
from dm.common.objects.dmObject import DmObject
from dm.common.objects.dmObjectManager import DmObjectManager
from dm.common.utility.dmSubprocess import DmSubprocess
#######################################################################
class FsControllerImpl(DmObjectManager):
""" FS controller implementation class. """
def __init__(self):
DmObjectManager.__init__(self)
def getDirectoryList(self, path):
p = DmSubprocess('ls -l %s' % path)
p.run()
return DmObject({'path' : path, 'directoryList' : p.getStdOut()})
#!/usr/bin/env python
#######################################################################
import cherrypy
from dm.common.service.dmController import DmController
from dm.common.objects.dmObject import DmObject
from dm.common.exceptions.dmException import DmException
from dm.common.exceptions.internalError import InternalError
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.fs_service.impl.fsControllerImpl import FsControllerImpl
#######################################################################
class FsController(DmController):
def __init__(self):
DmController.__init__(self)
self._fsControllerImpl = FsControllerImpl()
@cherrypy.expose
def getDirectoryList(self, **kwargs):
try:
if not kwargs.has_key('path'):
raise InvalidRequest('Missing directory path.')
path = kwargs.get('path')
response = '%s' % self._fsControllerImpl.getDirectoryList(path).getJsonRep()
self.getLogger().debug('Returning: %s' % response)
except DmException, ex:
self.getLogger().error('%s' % ex)
self.handleException(ex)
response = ex.getJsonRep()
except Exception, ex:
self.getLogger().error('%s' % ex)
self.handleException(ex)
response = InternalError(ex).getJsonRep()
return self.formatJsonResponse(response)
#!/usr/bin/env python
#
# File system controller service
#
####################################################################
from dm.common.service.dmRestWebService import DmRestWebService
from dm.common.utility import dmModuleManager
from dm.fs_service.service import fsServiceRouteMapper
####################################################################
class FsService(DmRestWebService):
def __init__(self):
DmRestWebService.__init__(self, fsServiceRouteMapper)
def initDmModules(self):
self._logger.debug('Initializing dm modules')
# Add modules that will be started.
moduleManager = dmModuleManager.getInstance()
self._logger.debug('Initialized dm modules')
####################################################################
# Run service
if __name__ == '__main__':
service = FsService();
service.run()
#!/usr/bin/env python
#
# Route mapper for file system service.
#
#######################################################################
import sys
import os
import cherrypy
from dm.common.utility import loggingManager
from dm.fs_service.service.fsController import FsController
#######################################################################
def setupRoutes():
""" Setup RESTFul routes. """
# Static instances shared between different routes
fsController = FsController()
# Define routes.
# Make sure to have leading '/' for consistency.
routes = [
# ('GET') routes do not require authorization.
# ('PUT', 'POST', 'DELETE') routes require authorization.
#
# FS Controller routes
#
# Get directory listing
{
'name' : 'getDirectoryList',
'path' : '/directory/list',
'controller' : fsController,
'action' : 'getDirectoryList',
'method' : ['GET']
},
]
# Add routes to dispatcher.
d = cherrypy.dispatch.RoutesDispatcher()
logger = loggingManager.getLogger('setupRoutes')
for route in routes:
logger.debug('Connecting route: %s' % route)
d.connect(route['name'], route['path'], action=route['action'], controller=route['controller'], conditions=dict(method=route['method']))
return d
all:
for d in $(SUBDIRS); do $(MAKE) -C $$d $(ARCH); done
dist:
for d in $(SUBDIRS); do $(MAKE) -C $$d $(ARCH); done
clean:
for d in $(SUBDIRS); do $(MAKE) -C $$d clean; done
distclean:
for d in $(SUBDIRS); do $(MAKE) -C $$d distclean; done
for d in $(SUBDIRS); do rm -f `find $$d -name 'RELEASE.local'`; done
tidy: distclean