[Bio] / FigWebServices / seed_ctl.cgi Repository:
ViewVC logotype

Annotation of /FigWebServices/seed_ctl.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download)

1 : olson 1.1 #
2 :     # SEED control panel.
3 :     #
4 :     # Functionality:
5 :     #
6 :     # Show info about this seed
7 :     # Enable / disable SEED
8 :     # Remake indexes
9 :     # Switch code versions
10 :     #
11 :    
12 :     use FIG;
13 :     #$FIG_Config::dbport =3000;
14 :    
15 :     use strict;
16 :    
17 :     use POSIX;
18 :    
19 :     use CGI;
20 :     my $cgi = new CGI;
21 :    
22 :     use HTML;
23 :     my @html = ();
24 :    
25 :     my $fig;
26 :     my $ok = eval {
27 :     $fig = new FIG;
28 :     };
29 :    
30 :     #
31 :     # Common dirs.
32 :     #
33 :    
34 :     my $job_dir = "$FIG_Config::data/Global/background_jobs";
35 :     my $down_file = "$FIG_Config::data/Global/why_down";
36 :    
37 :     #
38 :     # Handle actions first.
39 :     #
40 :    
41 :     if ($cgi->param('enable_server'))
42 :     {
43 :     push(@html, $cgi->p("Enabling server."));
44 :    
45 :    
46 :     unlink($down_file);
47 :     }
48 :     elsif ($cgi->param('disable_server'))
49 :     {
50 :     push(@html, $cgi->p("Disabling server."));
51 :    
52 :    
53 :     open my $fh, ">$down_file";
54 :     print $fh $cgi->param("disable_reason");
55 :     close($fh);
56 :     }
57 :     elsif ($cgi->param("rebuild_indexes"))
58 :     {
59 :     #
60 :     # Fork a process to run the rebuild scripts.
61 :     #
62 :    
63 :     my $child = fork;
64 :    
65 :     if (!$child)
66 :     {
67 :     #
68 :     # In the child
69 :     #
70 :    
71 :     POSIX::setsid();
72 :    
73 :     my $add = "$FIG_Config::bin/add_assertions_of_function";
74 :     my $mkindex = "$FIG_Config::bin/make_indexes";
75 :    
76 :     my $job_file = "$job_dir/$$";
77 :    
78 :    
79 :     open(my $fh, ">$job_file");
80 :     print $fh "Running $add\n";
81 :     close($fh);
82 :    
83 :     open(my $fh, ">$down_file");
84 :     print $fh "SEED server is rebuilding indexes.\n";
85 :     print $fh "Running $add\n";
86 :     close($fh);
87 :    
88 :     system($add);
89 :    
90 :     open my $fh, ">>$job_file";
91 :     print $fh "Running $mkindex\n";
92 :     close($fh);
93 :    
94 :     open my $fh, ">>$down_file";
95 :     print $fh "Running $mkindex\n";
96 :     close($fh);
97 :    
98 :     system($mkindex);
99 :    
100 :     unlink($job_file);
101 :     unlink($down_file);
102 :     }
103 :     }
104 :    
105 :     #
106 :     # Check params list for other actions (that encode names within the param name).
107 :     #
108 :    
109 :     for my $action ($cgi->param)
110 :     {
111 :     if ($action =~ /^delete_job_(\d+)/)
112 :     {
113 : olson 1.2 system("rm -r $job_dir/$1");
114 : olson 1.1 push(@html, $cgi->p("Removed job $1"));
115 :     }
116 :     elsif ($action =~ /^kill_job_(\d+)/)
117 :     {
118 : olson 1.2 my $ret = kill(1, -$1);
119 :     push(@html, $cgi->p("Killed job $1; return code is $ret"));
120 : olson 1.1 }
121 :     }
122 :    
123 :     #
124 :     # Check database
125 :     #
126 :    
127 :     push(@html, $cgi->h1("SEED current status"));
128 :     push(@html, $cgi->start_form(-action => "seed_ctl.cgi"));
129 :     push(@html, $cgi->h2("Database status"));
130 :    
131 :     if (!$ok)
132 :     {
133 :     push(@html, "Database system is unavailable.\n");
134 :     }
135 :     else
136 :     {
137 :     my $dbh = $fig->db_handle;
138 :    
139 :     my $resp = $dbh->SQL("SELECT count(*) from genome");
140 :     if (!$resp or @$resp == 0)
141 :     {
142 :     push(@html, "Could not get count from genome table\n");
143 :     }
144 :     else
145 :     {
146 :     my $c = $resp->[0]->[0];
147 :     push(@html, "Database live: found $c genomes\n");
148 :     }
149 :     }
150 :    
151 :     #
152 :     # Check enabled state.
153 :     #
154 :    
155 :     push(@html, $cgi->h2("SEED status"));
156 :    
157 :    
158 :     if (-f $down_file)
159 :     {
160 :     my $down_text = `cat $down_file`;
161 :    
162 :     push(@html, $cgi->p("SEED server is down:"));
163 :     push(@html, $cgi->pre($down_text));
164 :     push(@html, $cgi->submit(-value => "Enable SEED server.", -name => "enable_server"));
165 :    
166 :     }
167 :     else
168 :     {
169 :     push(@html, $cgi->p("SEED server is up.\n"));
170 :     push(@html, $cgi->p("To disable SEED server, enter a reason below and click button."));
171 :     push(@html, $cgi->textarea(-name => "disable_reason",
172 :     -rows => 3, -cols => 70));
173 :     push(@html, $cgi->p);
174 :     push(@html, $cgi->submit(-value => "Disable SEED server.", -name => "disable_server"));
175 :     }
176 :    
177 :     push(@html, $cgi->hr);
178 :    
179 :     #
180 :     # Check for background jobs.
181 :     #
182 :    
183 :     &FIG::verify_dir($job_dir);
184 :    
185 :     push(@html, $cgi->h2("Background jobs"));
186 :     push(@html, "\n");
187 :    
188 :     opendir(D, $job_dir);
189 :     my @jobs = grep { $_ =~ /^\d+$/ } readdir(D);
190 :    
191 :     if (@jobs > 0)
192 :     {
193 : olson 1.2 my @hdrs;
194 :     my $tbl = [];
195 : olson 1.1
196 : olson 1.2 @hdrs = ("Process", "Running", "Status", "Description", "Output", "Action");
197 : olson 1.1
198 :     for my $job (@jobs)
199 :     {
200 : olson 1.2 my($running, $status, $but, $output, $info);
201 : olson 1.1
202 :     if (kill(0, $job) > 0)
203 :     {
204 : olson 1.2 $running = "Running";
205 : olson 1.1 $but = $cgi->submit(-value => "Kill process", -name => "kill_job_$job");
206 :     }
207 :     else
208 :     {
209 : olson 1.2 $running = "Dead";
210 : olson 1.1 $but = $cgi->submit(-value => "Remove entry", -name => "delete_job_$job");
211 :     }
212 :    
213 : olson 1.2 $status = &FIG::file_read("$job_dir/$job/STATUS");
214 :     $info = &FIG::file_read("$job_dir/$job/INFO");
215 :     $output = &FIG::file_read("$job_dir/$job/OUTPUT");
216 :    
217 :     push(@$tbl, [$job, $running, $status, $info, "<pre>$output</pre>", $but]);
218 : olson 1.1 }
219 : olson 1.2 push(@html, &HTML::make_table(\@hdrs, $tbl));
220 : olson 1.1 }
221 :     else
222 :     {
223 :     push(@html, $cgi->p("No background jobs running"));
224 :     }
225 :    
226 :     push(@html, $cgi->hr());
227 :    
228 :     #
229 :     # Actions support.
230 :     #
231 :    
232 :     push(@html, $cgi->h1("SEED actions"));
233 :    
234 :     #
235 :     # making indexes.
236 :     #
237 :    
238 :     push(@html, $cgi->h2("Indexes"));
239 :     push(@html, $cgi->p("Recreating indexes can take a while; the SEED server will be unavailable to users while it is running."));
240 :     push(@html, $cgi->submit(-value => "Rebuild indexes", -name => "rebuild_indexes"));
241 :    
242 :     push(@html, $cgi->end_form);
243 :    
244 :     &HTML::show_page($cgi,\@html);
245 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3