File: transmutation.pl

package info (click to toggle)
oar 2.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,700 kB
  • sloc: perl: 34,517; sh: 6,041; ruby: 5,840; sql: 3,390; cpp: 2,277; makefile: 402; php: 365; ansic: 335; python: 275; exp: 23
file content (48 lines) | stat: -rwxr-xr-x 1,611 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl -w
# This hack allows one to transmute a batch to an advance reservation
# Additional types must be allowed (admission rules): evening, night, week-end
# This hack is thought to be run before each pass of the metascheduler (in a
# wrapper around it) so that there is not conflict with the scheduling.
use strict;
use warnings;

use DBI;
use Data::Dumper;

my $date = shift or die "I need a date";
my $db_host = "localhost";
my $db_port = "5432";
my $db_user = "oar";
my $db_password = "oar";
my $db_name = "oar";
my $db_type = "Pg";

my $dbh = DBI->connect("DBI:$db_type:database=$db_name;host=$db_host;port=$db_port", $db_user, $db_password, {'InactiveDestroy' => 1, 'PrintError' => 1}) or die;

my $req = <<EOS;
SELECT 
  j.job_id, p.start_time, j.message
FROM
  jobs j, moldable_job_descriptions m, gantt_jobs_predictions p, job_types t
WHERE
  p.moldable_job_id = m.moldable_id AND
  j.job_id = m.moldable_job_id AND
  t.job_id = j.job_id AND
  t.type IN ('evening=$date', 'night=$date', 'week-end=$date') AND
  NOT j.reservation = 'Scheduled'
EOS
my $sth = $dbh->prepare($req);

$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
  print Dumper($ref);
  $ref->{message} =~ s/J=B/J=R/;
  $current_time = $dbh
  $dbh->do("UPDATE jobs SET reservation='Scheduled', start_time=$ref->{start_time}, message='$ref->{message}' WHERE job_id = $ref->{job_id}");
  $dbh->do("INSERT INTO event_logs (type,job_id,date,description,to_check) VALUES ('EXTERNAL',$job_id,EXTRACT(EPOCH FROM current_timestamp),'batch job transmuted to advance reservation','NO')");
}
$dbh->disconnect() or die;