ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/DBTools/scripts/osucrab
Revision: 1.5
Committed: Wed Oct 17 18:28:47 2012 UTC (12 years, 6 months ago) by ahart
Branch: MAIN
CVS Tags: V00-00-05
Changes since 1.4: +4 -4 lines
Log Message:
Append the hostname to the lastUpdateUser field.

File Contents

# Content
1 #!/usr/bin/env perl
2
3 use strict;
4 use Mysql;
5
6 sub getWorkingDir;
7 sub dbUpdate;
8 sub dbStatus;
9 sub dbReport;
10 sub dbInsert;
11 sub addSlashes;
12 sub getOption;
13
14 our $db = Mysql->connect ("cmshead.mps.ohio-state.edu", "ntuple", "osuT3User") or die "Failed to connect to Tier 3, stopped";
15
16 my $arg = join (" ", @ARGV);
17 if ($arg =~ m/-create/)
18 {
19 my $crabCfgName = $arg;
20 $crabCfgName =~ s/.*-cfg *([^ \t\n]*).*/$1/;
21 open (CRAB_CFG, "<$crabCfgName");
22 my @crabCfg = <CRAB_CFG>;
23 close (CRAB_CFG);
24 my $dataset = getOption (\@crabCfg, "datasetpath");
25 my $psetName = getOption (\@crabCfg, "pset");
26 my $jsonFileName = getOption (\@crabCfg, "lumi_mask");
27 my $submissionLogName = getOption (\@crabCfg, "ui_working_dir");
28 $submissionLogName .= "/log/crab.log";
29
30 print "Ntuple format (BEAN): ";
31 my $format = <STDIN>;
32 $format =~ s/\n//g;
33 $format = "BEAN" if !$format;
34 print "Comment for the ntuple database: ";
35 my $comment = <STDIN>;
36 $comment =~ s/\n//g;
37
38 system ("crab $arg");
39
40 my $status = "created";
41 $status = "submitted" if $arg =~ m/-submit/;
42 my $results = dbInsert ($dataset, "$ENV{'USER'}\@$ENV{'HOSTNAME'}", $format, "", 0, 0, $status, $comment, $psetName, $crabCfgName, $jsonFileName, $submissionLogName);
43 }
44 elsif ($arg =~ m/-submit/)
45 {
46 my $workingDir = getWorkingDir (\@ARGV);
47 my $id = -1;
48 if (-e "$workingDir/log/.osuID")
49 {
50 open (ID_FILE, "<$workingDir/log/.osuID");
51 $id = <ID_FILE>;
52 close (ID_FILE);
53 $id =~ s/(.*)\n/$1/;
54 }
55 my $submissionLogName = $workingDir . "/log/crab.log";
56
57 system ("crab $arg");
58
59 my $results = dbUpdate ($id, "submitted", $submissionLogName, "$ENV{'USER'}\@$ENV{'HOSTNAME'}") if $id > -1;
60 }
61 elsif ($arg =~ m/-report/)
62 {
63 my $workingDir = getWorkingDir (\@ARGV);
64 my $id = -1;
65 if (-e "$workingDir/log/.osuID")
66 {
67 open (ID_FILE, "<$workingDir/log/.osuID");
68 $id = <ID_FILE>;
69 close (ID_FILE);
70 $id =~ s/(.*)\n/$1/;
71 }
72 my $lumiSummaryName = $workingDir . "/res/lumiSummary.json";
73
74 system ("crab $arg");
75
76 my $results = dbReport ($id, "complete", $lumiSummaryName, "$ENV{'USER'}\@$ENV{'HOSTNAME'}") if $id > -1;
77 }
78 elsif ($arg =~ m/-status/)
79 {
80 my $workingDir = getWorkingDir (\@ARGV);
81 my $id = -1;
82 if (-e "$workingDir/log/.osuID")
83 {
84 open (ID_FILE, "<$workingDir/log/.osuID");
85 $id = <ID_FILE>;
86 close (ID_FILE);
87 $id =~ s/(.*)\n/$1/;
88 }
89 my $currentStatusName = "$workingDir/log/.currentStatus";
90 unlink ($currentStatusName) if -e $currentStatusName;
91 system ("crab $arg | tee $currentStatusName");
92 my $results = dbStatus ($id, $currentStatusName, "$ENV{'USER'}\@$ENV{'HOSTNAME'}") if $id > -1;
93 unlink ($currentStatusName);
94 }
95 else
96 {
97 system ("crab $arg");
98 }
99
100 sub
101 getWorkingDir
102 {
103 my $argv = shift;
104
105 my $workingDir;
106 my $nextToLast = 0;
107 foreach my $argument (@$argv)
108 {
109 if ($nextToLast)
110 {
111 $workingDir = $argument;
112 last;
113 }
114 $nextToLast = 1 if ($argument eq "-c" || $argument eq "-continue");
115 }
116
117 return $workingDir;
118 }
119
120 sub
121 getOption
122 {
123 my $file = shift;
124 my $option = shift;
125
126 my $optionValue;
127 foreach my $line (@$file)
128 {
129 next if (!($line =~ m/$option *= *[^ \t\n]*/));
130 $optionValue = $line;
131 $optionValue =~ s/.*$option *= *([^ \t\n]*).*\n/$1/;
132 }
133
134 return $optionValue;
135 }
136
137 sub
138 addSlashes
139 {
140 my $string = shift;
141
142 $string =~ s/\\/\\\\/g;
143 $string =~ s/'/\\'/g;
144 $string =~ s/"/\\"/g;
145 $string =~ s/\\0/\\\\0/g;
146
147 return $string;
148 }
149
150 sub
151 dbInsert
152 {
153 my $dataset = shift;
154 my $user = shift;
155 my $format = shift;
156 my $location = shift;
157 my $nFiles = shift;
158 my $sizeInGB = shift;
159 my $status = shift;
160 my $comment = shift;
161 my $psetName = shift;
162 my $crabCfgName = shift;
163 my $jsonFileName = shift;
164 my $submissionLogName = shift;
165
166 open (PY_CONFIG, "<$psetName");
167 my @pset = <PY_CONFIG>;
168 close (PY_CONFIG);
169 my $pset = join ("", @pset);
170 open (CRAB_CONFIG, "<$crabCfgName");
171 my @crabCfg = <CRAB_CONFIG>;
172 close (CRAB_CONFIG);
173 my $crabCfg = join ("", @crabCfg);
174 open (JSON_FILE, "<$jsonFileName");
175 my @jsonFile = <JSON_FILE>;
176 close (JSON_FILE);
177 my $jsonFile = join ("", @jsonFile);
178 open (SUBMISSION_LOG, "<$submissionLogName");
179 my @submissionLog = <SUBMISSION_LOG>;
180 close (SUBMISSION_LOG);
181 my $submissionLog = join ("", @submissionLog);
182
183 $dataset = addSlashes ($dataset);
184 $user = addSlashes ($user);
185 $format = addSlashes ($format);
186 $pset = addSlashes ($pset);
187 $crabCfg = addSlashes ($crabCfg);
188 $jsonFile = addSlashes ($jsonFile);
189 $submissionLog = addSlashes ($submissionLog);
190 $location = addSlashes ($location);
191 $status = addSlashes ($status);
192 $comment = addSlashes ($comment);
193
194 my $results;
195 my $query = "select max(id) from ntuple";
196 $db->selectdb ("ntuple");
197 $results = $db->query ($query);
198 my @row = $results->fetchrow ();
199 my $id = 1;
200 $id = $row[0] + 1 if $results->numrows ();
201
202 my $workingDir = $submissionLogName;
203 $workingDir =~ s/(.*)\/log\/crab\.log/$1/;
204 open (ID_FILE, ">$workingDir/log/.osuID");
205 print ID_FILE "$id\n";
206 close (ID_FILE);
207
208 $query = "insert into ntuple (id, dataset, creationTime, lastUpdateTime, lastUpdateUser, user, format, location, nFiles, sizeInGB, status, comment, pset, crabCfg, jsonFile, submissionLog) values ($id, '$dataset', now(), now(), '$user', '$user', '$format', '$location', $nFiles, $sizeInGB, '$status', '$comment', '$pset', '$crabCfg', '$jsonFile', '$submissionLog')";
209 $results = $db->query ($query);
210
211 return $results;
212 }
213
214 sub
215 dbUpdate
216 {
217 my $id = shift;
218 my $status = shift;
219 my $submissionLogName = shift;
220 my $user = shift;
221
222 open (SUBMISSION_LOG, "<$submissionLogName");
223 my @submissionLog = <SUBMISSION_LOG>;
224 close (SUBMISSION_LOG);
225 my $submissionLog = join ("", @submissionLog);
226
227 $submissionLog = addSlashes ($submissionLog);
228 $status = addSlashes ($status);
229 $user = addSlashes ($user);
230
231 my $results;
232 my $query = "update ntuple set lastUpdateTime=now(), lastUpdateUser='$user', status='$status', submissionLog='$submissionLog' where id=$id";
233 $db->selectdb ("ntuple");
234 $results = $db->query ($query);
235
236 return $results;
237 }
238
239 sub
240 dbStatus
241 {
242 my $id = shift;
243 my $currentStatusName = shift;
244 my $user = shift;
245
246 open (CURRENT_STATUS, "<$currentStatusName");
247 my @currentStatus = <CURRENT_STATUS>;
248 close (CURRENT_STATUS);
249 my $currentStatus = join ("", @currentStatus);
250
251 $currentStatus = addSlashes ($currentStatus);
252 $user = addSlashes ($user);
253
254 my $results;
255 my $query = "update ntuple set lastUpdateTime=now(), lastUpdateUser='$user', currentStatus='$currentStatus' where id=$id";
256 $db->selectdb ("ntuple");
257 $results = $db->query ($query);
258
259 return $results;
260 }
261
262 sub
263 dbReport
264 {
265 my $id = shift;
266 my $status = shift;
267 my $lumiSummaryName = shift;
268 my $user = shift;
269
270 open (LUMI_SUMMARY, "<$lumiSummaryName");
271 my @lumiSummary = <LUMI_SUMMARY>;
272 close (LUMI_SUMMARY);
273 my $lumiSummary = join ("", @lumiSummary);
274
275 $lumiSummary = addSlashes ($lumiSummary);
276 $status = addSlashes ($status);
277 $user = addSlashes ($user);
278
279 my $results;
280 my $query = "update ntuple set lastUpdateTime=now(), lastUpdateUser='$user', status='$status', lumiSummary='$lumiSummary' where id=$id";
281 $db->selectdb ("ntuple");
282 $results = $db->query ($query);
283
284 return $results;
285 }