ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/DBTools/scripts/osucrab
Revision: 1.7
Committed: Wed Dec 12 20:44:29 2012 UTC (12 years, 4 months ago) by ahart
Branch: MAIN
Changes since 1.6: +6 -22 lines
Log Message:
Do not upload crab.log when creating and submitting jobs.

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