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

Annotation of /FigWebServices/seed_ctl.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (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 :     unlink("$job_dir/$1");
114 :     push(@html, $cgi->p("Removed job $1"));
115 :     }
116 :     elsif ($action =~ /^kill_job_(\d+)/)
117 :     {
118 :     kill(1, -$1);
119 :     push(@html, $cgi->p("Killed job $1"));
120 :     }
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 :     push(@html, $cgi->start_table({-border => 1}));
194 :    
195 :     push(@html, $cgi->TR($cgi->th(["Process", "Status", "Description","Action"])));
196 :    
197 :     for my $job (@jobs)
198 :     {
199 :     my($status, $but);
200 :    
201 :     if (kill(0, $job) > 0)
202 :     {
203 :     $status = "Running";
204 :     $but = $cgi->submit(-value => "Kill process", -name => "kill_job_$job");
205 :     }
206 :     else
207 :     {
208 :     $status = "Dead";
209 :     $but = $cgi->submit(-value => "Remove entry", -name => "delete_job_$job");
210 :     }
211 :    
212 :     push(@html, $cgi->start_TR());
213 :     push(@html, $cgi->td($job));
214 :     push(@html, $cgi->td($status));
215 :    
216 :     open my $fh, "<$job_dir/$job";
217 :     local $/;
218 :     my $job_status = <$fh>;
219 :     push(@html, $cgi->td($cgi->pre($job_status)));
220 :    
221 :     push(@html, $cgi->td($but));
222 :     push(@html, $cgi->end_TR());
223 :     push(@html, "\n");
224 :    
225 :     }
226 :     push(@html, $cgi->end_table());
227 :     }
228 :     else
229 :     {
230 :     push(@html, $cgi->p("No background jobs running"));
231 :     }
232 :    
233 :     push(@html, $cgi->hr());
234 :    
235 :     #
236 :     # Actions support.
237 :     #
238 :    
239 :     push(@html, $cgi->h1("SEED actions"));
240 :    
241 :     #
242 :     # making indexes.
243 :     #
244 :    
245 :     push(@html, $cgi->h2("Indexes"));
246 :     push(@html, $cgi->p("Recreating indexes can take a while; the SEED server will be unavailable to users while it is running."));
247 :     push(@html, $cgi->submit(-value => "Rebuild indexes", -name => "rebuild_indexes"));
248 :    
249 :     push(@html, $cgi->end_form);
250 :    
251 :     &HTML::show_page($cgi,\@html);
252 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3