#!/usr/bin/env python import os import time from dm.common.utility.loggingManager import LoggingManager from dm.common.utility.timeUtility import TimeUtility from dm.common.processing.plugins.fileProcessor import FileProcessor from dm.common.utility.dmSubprocess import DmSubprocess class SgeJobSubmissionPlugin(FileProcessor): SGE_JOB_SCRIPT_KEY = 'sgeJobScript' def __init__(self, sgeRoot): FileProcessor.__init__(self) self.sgeRoot = sgeRoot self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__) def processFile(self, fileInfo): experimentName = fileInfo.get('experimentName') experimentFilePath = fileInfo.get('experimentFilePath') daqInfo = fileInfo.get('daqInfo', {}) sgeJobScript = daqInfo.get(self.SGE_JOB_SCRIPT_KEY) if not sgeJobScript: self.logger.debug('Ignoring file %s for experiment %s' % (experimentFilePath, experimentName)) return self.logger.debug('Processing file %s for experiment %s' % (experimentFilePath, experimentName)) storageDirectory = fileInfo.get('storageDirectory') storageFilePath = os.path.join(storageDirectory, experimentFilePath) # Process file try: p = DmSubprocess('. %s/default/common/settings.sh ; qsub -v DM_EXPERIMENT_NAME=%s %s %s' % (self.sgeRoot, experimentName, sgeJobScript, storageFilePath)) p.run() except Exception, ex: self.logger.error('Cannot process file %s for experiment %s: %s' % (experimentFilePath, experimentName, ex)) return ####################################################################### # Testing. if __name__ == '__main__': pass