2 |
|
|
3 |
|
import sys, getopt, string |
4 |
|
|
5 |
< |
from FwkJobRep.ReportParser import readJobReport |
5 |
> |
from ProdCommon.FwkJobRep.ReportParser import readJobReport |
6 |
|
from DashboardAPI import apmonSend, apmonFree |
7 |
|
|
8 |
|
|
60 |
|
|
61 |
|
exit_status = '' |
62 |
|
|
63 |
< |
# get ExitStatus of last error |
64 |
< |
if len(jobReport.errors) != 0 : |
65 |
< |
exit_status = str(jobReport.errors[-1]['ExitStatus']) |
66 |
< |
else : |
67 |
< |
exit_status = str(0) |
63 |
> |
##### temporary fix for FJR incomplete #### |
64 |
> |
fjr = open (input) |
65 |
> |
len_fjr = len(fjr.readlines()) |
66 |
> |
if (len_fjr <= 6): |
67 |
> |
### 50115 - cmsRun did not produce a valid/readable job report at runtime |
68 |
> |
exit_status = str(50115) |
69 |
> |
else: |
70 |
> |
# get ExitStatus of last error |
71 |
> |
if len(jobReport.errors) != 0 : |
72 |
> |
exit_status = str(jobReport.errors[-1]['ExitStatus']) |
73 |
> |
else : |
74 |
> |
exit_status = str(0) |
75 |
|
|
76 |
|
# get i/o statistics |
77 |
|
storageStatistics = str(jobReport.storageStatistics) |
79 |
|
# dashboard report dictionary |
80 |
|
dashboard_report = {} |
81 |
|
|
82 |
+ |
##Brian's patch to sent number of events procedded to the Dashboard |
83 |
+ |
# Add NoEventsPerRun to the Dashboard report |
84 |
+ |
eventsPerRun = 0 |
85 |
+ |
for inputFile in jobReport.inputFiles: |
86 |
+ |
try: |
87 |
+ |
eventsRead = str(inputFile.get('EventsRead', 0)) |
88 |
+ |
eventsRead = int(eventsRead.strip()) |
89 |
+ |
except: |
90 |
+ |
continue |
91 |
+ |
eventsPerRun += eventsRead |
92 |
+ |
dashboard_report['NoEventsPerRun'] = eventsPerRun |
93 |
+ |
dashboard_report['NbEvPerRun'] = eventsPerRun |
94 |
+ |
dashboard_report['NEventsProcessed'] = eventsPerRun |
95 |
+ |
#print "Total number of events:", eventsPerRun |
96 |
+ |
## |
97 |
+ |
|
98 |
|
# check if storageStatistics is valid |
99 |
|
if storageStatistics.find('Storage statistics:') != -1 : |
100 |
|
# report form: { 'protocol' : { 'action' : [attempted,succedeed,total-size,total-time,min-time,max-time] , ... } , ... } |
103 |
|
data_fields = data.split(';') |
104 |
|
for data_field in data_fields: |
105 |
|
# parse: format protocol/action = attepted/succedeed/total-size/total-time/min-time/max-time |
106 |
+ |
if data_field == ' ' or not data_field or data_field == '': |
107 |
+ |
continue |
108 |
|
key = data_field.split('=')[0].strip() |
109 |
|
item = data_field.split('=')[1].strip() |
110 |
|
protocol = str(key.split('/')[0].strip()) |