CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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__
 
def run
 
- Public Member Functions inherited from production_tasks.Task
def __init__
 
def addOption
 
def getname
 
def run
 

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 798 of file production_tasks.py.

Constructor & Destructor Documentation

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

Definition at line 800 of file production_tasks.py.

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

Member Function Documentation

def production_tasks.WriteJobReport.run (   self,
  input 
)

Definition at line 802 of file production_tasks.py.

References python.multivaluedict.append(), and mergeVDriftHistosByStation.file.

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