CMS 3D CMS Logo

List of all members | Public Member Functions
production_tasks.WriteJobReport Class Reference
Inheritance diagram for production_tasks.WriteJobReport:
production_tasks.Task

Public Member Functions

def __init__ (self, dataset, user, options)
 
def run (self, input)
 
- Public Member Functions inherited from production_tasks.Task
def __init__ (self, name, dataset, user, options, instance=None)
 
def addOption (self, parser)
 
def getname (self)
 
def run (self, input)
 

Additional Inherited Members

- Public Attributes inherited from production_tasks.Task
 dataset
 
 instance
 
 name
 
 options
 
 user
 

Detailed Description

Write a summary report on each job

Definition at line 802 of file production_tasks.py.

Constructor & Destructor Documentation

def production_tasks.WriteJobReport.__init__ (   self,
  dataset,
  user,
  options 
)

Definition at line 804 of file production_tasks.py.

804  def __init__(self, dataset, user, options):
805  Task.__init__(self,'WriteJobReport', dataset, user, options)
def __init__(self, dataset, user, options)

Member Function Documentation

def production_tasks.WriteJobReport.run (   self,
  input 
)

Definition at line 806 of file production_tasks.py.

References mps_setup.append, and FrontierConditions_GlobalTag_cff.file.

806  def run(self, input):
807 
808  report = input['CheckJobStatus']
809 
810  #collect a list of jobs by status
811  states = {}
812  for j, status in six.iteritems(report['LSFJobStatusCheck']):
813  if status not in states:
814  states[status] = []
815  states[status].append(j)
816  jobdir = input['CreateJobDirectory']['PWD']
817  if not os.path.exists(jobdir):
818  raise Exception("Top level job directory not found: '%s'" % jobdir)
819  report_file = os.path.join(input['CreateJobDirectory']['JobDir'],'resubmit.sh')
820 
821  output = file(report_file,'w')
822  output.write('#!/usr/bin/env bash\n')
823 
824  if report['MaskPresent']:
825  mask = report['Report']
826  output.write('#PrimaryDatasetFraction: %f\n' % mask['PrimaryDatasetFraction'])
827  output.write('#FilesGood: %i\n' % mask['FilesGood'])
828  output.write('#FilesBad: %i\n' % mask['FilesBad'])
829 
830  user_group = ''
831  if self.options.group is not None:
832  user_group = '-G %s' % self.options.group
833 
834  for status, jobs in six.iteritems(states):
835  output.write('# %d jobs found in state %s\n' % (len(jobs),status) )
836  if status == 'VALID':
837  continue
838  for j in jobs:
839  jdir = os.path.join(jobdir,j)
840  output.write('pushd %s; bsub -q %s -J RESUB -u cmgtoolslsf@gmail.com %s < ./batchScript.sh | tee job_id_resub.txt; popd\n' % (jdir,self.options.queue,user_group))
841  output.close()
842 
843  return {'SummaryFile':report_file}