ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/DBTools/scripts/osucrab
Revision: 1.8
Committed: Wed Dec 12 21:38:19 2012 UTC (12 years, 5 months ago) by ahart
Branch: MAIN
Changes since 1.7: +31 -0 lines
Log Message:
Delete the database entry upon killing jobs after a prompt.

File Contents

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