def __init__(self, config, name): config.set('se input timeout', '0:30') config.set('dataset provider', 'DBS3Provider') config.set('dataset splitter', 'EventBoundarySplitter') config.set('dataset processor', 'LumiDataProcessor', '+=') config.set('partition processor', 'TFCPartitionProcessor LocationPartitionProcessor MetaPartitionProcessor ' + 'LFNPartitionProcessor LumiPartitionProcessor CMSSWPartitionProcessor') dash_config = config.changeView(viewClass = 'SimpleConfigView', setSections = ['dashboard']) dash_config.set('application', 'cmsRun') SCRAMTask.__init__(self, config, name) if self._scramProject != 'CMSSW': raise ConfigError('Project area contains no CMSSW project') self._oldReleaseTop = None if self._projectArea: self._oldReleaseTop = self._parse_scram_file(os.path.join(self._projectArea, '.SCRAM', self._scramArch, 'Environment')).get('RELEASETOP', None) self.updateErrorDict(utils.pathShare('gc-run.cmssw.sh', pkg = 'grid_control_cms')) self._projectAreaTarballSE = config.getBool(['se runtime', 'se project area'], True) self._projectAreaTarball = config.getWorkPath('cmssw-project-area.tar.gz') # Prolog / Epilog script support - warn about old syntax self.prolog = TaskExecutableWrapper(config, 'prolog', '') self.epilog = TaskExecutableWrapper(config, 'epilog', '') if config.getPaths('executable', []) != []: raise ConfigError('Prefix executable and argument options with either prolog or epilog!') self.arguments = config.get('arguments', '') # Get cmssw config files and check their existance # Check that for dataset jobs the necessary placeholders are in the config file if self._dataSplitter is None: self.eventsPerJob = config.get('events per job', '0') # this can be a variable like @USER_EVENTS@! fragment = config.getPath('instrumentation fragment', utils.pathShare('fragmentForCMSSW.py', pkg = 'grid_control_cms')) self.configFiles = self._processConfigFiles(config, list(self._getConfigFiles(config)), fragment, autoPrepare = config.getBool('instrumentation', True), mustPrepare = (self._dataSplitter is not None)) # Create project area tarball if self._projectArea and not os.path.exists(self._projectAreaTarball): config.setState(True, 'init', detail = 'sandbox') # Information about search order for software environment self.searchLoc = self._getCMSSWPaths(config) if config.getState('init', detail = 'sandbox'): if os.path.exists(self._projectAreaTarball): if not utils.getUserBool('CMSSW tarball already exists! Do you want to regenerate it?', True): return # Generate CMSSW tarball if self._projectArea: utils.genTarball(self._projectAreaTarball, utils.matchFiles(self._projectArea, self._projectAreaPattern)) if self._projectAreaTarballSE: config.setState(True, 'init', detail = 'storage')
def __init__(self, config, name): config.set('se input timeout', '0:30') config.set('application', 'cmsRun', section='dashboard') config.set('dataset provider', 'DBS3Provider') config.set('dataset splitter', 'EventBoundarySplitter') config.set('dataset processor', 'LumiDataProcessor', '+=') config.set('partition processor', 'BasicPartitionProcessor', '-=') config.set( 'partition processor', 'LFNPartitionProcessor LumiPartitionProcessor CMSSWPartitionProcessor', '+=') self._needed_vn_set = set() SCRAMTask.__init__(self, config, name) self._uii = UserInputInterface() # Setup file path informations self._cmsrun_output_files = ['cmssw.dbs.tar.gz'] if self._do_gzip_std_output: self._cmsrun_output_files.append('cmssw.log.gz') self._script_fpi = Result(path_rel='gc-run.cmssw.sh', path_abs=get_path_share( 'gc-run.cmssw.sh', pkg='grid_control_cms')) if self._scram_project != 'CMSSW': raise ConfigError('Project area contains no CMSSW project') self._old_release_top = None if self._project_area: scram_arch_env_path = os.path.join(self._project_area, '.SCRAM', self._scram_arch, 'Environment') self._old_release_top = self._parse_scram_file( scram_arch_env_path).get('RELEASETOP') self._update_map_error_code2msg( get_path_share('gc-run.cmssw.sh', pkg='grid_control_cms')) self._project_area_tarball_on_se = config.get_bool( ['se runtime', 'se project area'], True) self._project_area_tarball = config.get_work_path( 'cmssw-project-area.tar.gz') # Prolog / Epilog script support - warn about old syntax self.prolog = TaskExecutableWrapper(config, 'prolog', '') self.epilog = TaskExecutableWrapper(config, 'epilog', '') if config.get_fn_list('executable', []) != []: raise ConfigError( 'Prefix executable and argument options with either prolog or epilog!' ) self.arguments = config.get('arguments', '') # Get cmssw config files and check their existance # Check that for dataset jobs the necessary placeholders are in the config file if not self._has_dataset: self._events_per_job = config.get('events per job', '0') # this can be a variable like @USER_EVENTS@! self._needed_vn_set.add('MAX_EVENTS') fragment = config.get_fn( 'instrumentation fragment', get_path_share('fragmentForCMSSW.py', pkg='grid_control_cms')) self._config_fn_list = self._process_config_file_list( config, config.get_fn_list('config file', self._get_config_file_default()), fragment, auto_prepare=config.get_bool('instrumentation', True), must_prepare=self._has_dataset) # Create project area tarball if self._project_area and not os.path.exists( self._project_area_tarball): config.set_state(True, 'init', detail='sandbox') # Information about search order for software environment self._cmssw_search_dict = self._get_cmssw_path_list(config) if config.get_state('init', detail='sandbox'): msg = 'CMSSW tarball already exists! Do you want to regenerate it?' if os.path.exists( self._project_area_tarball) and not self._uii.prompt_bool( msg, True): return # Generate CMSSW tarball if self._project_area: create_tarball(_match_files( self._project_area, self._project_area_matcher, self._always_matcher.create_matcher(''), self._project_area_base_fn), name=self._project_area_tarball) if self._project_area_tarball_on_se: config.set_state(True, 'init', detail='storage')
def __init__(self, config, name): DataTask.__init__(self, config, name) self._exeWrap = TaskExecutableWrapper(config)
def __init__(self, config, name): config.set('se input timeout', '0:30') config.set('dataset provider', 'DBS3Provider') config.set('dataset splitter', 'EventBoundarySplitter') config.set( 'partition processor', 'CMSPartitionProcessor LocationPartitionProcessor LumiPartitionProcessor' ) config.set('dataset processor', 'LumiDataProcessor', '+=') DataTask.__init__(self, config, name) self.updateErrorDict( utils.pathShare('gc-run.cmssw.sh', pkg='grid_control_cms')) # SCRAM settings self._configureSCRAMSettings(config) self.useReqs = config.getBool('software requirements', True, onChange=None) self._projectAreaTarballSE = config.getBool( ['se project area', 'se runtime'], True) self._projectAreaTarball = config.getWorkPath( 'cmssw-project-area.tar.gz') # Information about search order for software environment self.searchLoc = self._getCMSSWPaths(config) # Prolog / Epilog script support - warn about old syntax self.prolog = TaskExecutableWrapper(config, 'prolog', '') self.epilog = TaskExecutableWrapper(config, 'epilog', '') if config.getPaths('executable', []) != []: raise ConfigError( 'Prefix executable and argument options with either prolog or epilog!' ) self.arguments = config.get('arguments', '') # Get cmssw config files and check their existance # Check that for dataset jobs the necessary placeholders are in the config file if self.dataSplitter is None: self.eventsPerJob = config.get('events per job', '0') fragment = config.getPath( 'instrumentation fragment', utils.pathShare('fragmentForCMSSW.py', pkg='grid_control_cms')) self.configFiles = self._processConfigFiles( config, list(self._getConfigFiles(config)), fragment, autoPrepare=config.getBool('instrumentation', True), mustPrepare=(self.dataSplitter is not None)) # Create project area tarball if not os.path.exists(self._projectAreaTarball): config.setState(True, 'init', detail='sandbox') if config.getState('init', detail='sandbox'): if os.path.exists(self._projectAreaTarball): if not utils.getUserBool( 'CMSSW tarball already exists! Do you want to regenerate it?', True): return # Generate CMSSW tarball if self.projectArea: utils.genTarball( self._projectAreaTarball, utils.matchFiles(self.projectArea, self.pattern)) if self._projectAreaTarballSE: config.setState(True, 'init', detail='storage')