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 |
|
|
58 |
|
# load FwkJobRep |
59 |
|
jobReport = readJobReport(input)[0] |
60 |
|
|
61 |
< |
exit_satus = '' |
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) |
87 |
|
data_fields = data.split(';') |
88 |
|
for data_field in data_fields: |
89 |
|
# parse: format protocol/action = attepted/succedeed/total-size/total-time/min-time/max-time |
90 |
+ |
if data_field == ' ' or not data_field or data_field == '': |
91 |
+ |
continue |
92 |
|
key = data_field.split('=')[0].strip() |
93 |
|
item = data_field.split('=')[1].strip() |
94 |
|
protocol = str(key.split('/')[0].strip()) |
143 |
|
for key in dashboard_report.keys() : |
144 |
|
exit_string += ';' + str(key) + '=' + str(dashboard_report[key]) |
145 |
|
|
146 |
+ |
|
147 |
+ |
|
148 |
|
return exit_string |
149 |
|
|
150 |
|
|