[Bio] / FortyEight / PipelineUtils.pm Repository:
ViewVC logotype

Annotation of /FortyEight/PipelineUtils.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : olson 1.1
2 :     package PipelineUtils;
3 :     use strict;
4 :    
5 :     use base 'Exporter';
6 :    
7 :     @EXPORT = qw(sge_submit get_sge_deadline_arg find_fs_resource get_sge_priority);
8 :    
9 :     sub sge_submit
10 :     {
11 :     my($meta, $sge_args, $cmd) = @_;
12 :    
13 :     my @sge_opts;
14 :     if (my $res = $meta->get_metadata("lustre_resource"))
15 :     {
16 :     push @sge_opts, -l => $res;
17 :     }
18 :     push(@sge_opts, get_sge_deadline_arg($meta));
19 :     push(@sge_opts, get_sge_user_priority($meta));
20 :     if (my $res = $meta->get_metadata("sge_priority"))
21 :     {
22 :     if (ref($res) eq 'ARRAY')
23 :     {
24 :     push @sge_opts, @$res;
25 :     }
26 :     elsif (!ref($res))
27 :     {
28 :     push @sge_opts, split(/\s+/, $res);
29 :     }
30 :     }
31 :    
32 :     my $sge_cmd = "qsub @sge_opts $sge_args $cmd";
33 :    
34 :     $meta->add_log_entry($0, $sge_cmd);
35 :    
36 :     if (!open(Q, "$sge_cmd 2>&1 |"))
37 :     {
38 :     die "Qsub failed: $!";
39 :     }
40 :     my $sge_job_id;
41 :     my $submit_output;
42 :     while (<Q>)
43 :     {
44 :     $submit_output .= $_;
45 :     print "Qsub: $_";
46 :     if (/Your\s+job\s+(\d+)/)
47 :     {
48 :     $sge_job_id = $1;
49 :     }
50 :     elsif (/Your\s+job-array\s+(\d+)/)
51 :     {
52 :     $sge_job_id = $1;
53 :     }
54 :     }
55 :     $meta->add_log_entry($0, ["qsub_output", $submit_output]);
56 :     if (!close(Q))
57 :     {
58 :     die "Qsub close failed: $!";
59 :     }
60 :    
61 :     if (!$sge_job_id)
62 :     {
63 :     die "did not get job id from qsub";
64 :     }
65 :    
66 :     return $sge_job_id;
67 :     }
68 :    
69 :     sub get_sge_deadline_arg
70 :     {
71 :     my($meta) = @_;
72 :     if ($FIG_Config::use_deadline_scheduling)
73 :     {
74 :     my $dl = $meta->get_metadata("sge_deadline");
75 :     if ($dl ne '')
76 :     {
77 :     if (wantarray)
78 :     {
79 :     return("-dl", $dl);
80 :     }
81 :     else
82 :     {
83 :     return "-dl $dl";
84 :     }
85 :     }
86 :     }
87 :     return;
88 :     }
89 :    
90 :     sub get_sge_user_priority
91 :     {
92 :     my($meta) = @_;
93 :     if ($FIG_Config::use_priority_scheduling)
94 :     {
95 :     my $prio = $meta->get_metadata("sge_priority");
96 :     if (defined($prio))
97 :     {
98 :     return $prio;
99 :     }
100 :     else
101 :     {
102 :     return;
103 :     }
104 :     }
105 :     }
106 :    
107 :     sub find_fs_resource
108 :     {
109 :     my($job) = @_;
110 :     my $fs_resource;
111 :     if (my $fileserver = $job->find_job_fileserver())
112 :     {
113 :     if ($fileserver eq 'rast.mcs.anl.gov')
114 :     {
115 :     $fs_resource = "-l local_rast";
116 :     }
117 :     elsif ($fileserver eq 'cgat.mcs.anl.gov')
118 :     {
119 :     $fs_resource = "-l local_cgat";
120 :     }
121 :     elsif ($fileserver eq 'lustre')
122 :     {
123 :     $fs_resource = "-l lustre_lustre1";
124 :     }
125 :     }
126 :    
127 :     return $fs_resource;
128 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3