BatchSystem-SBS/cgi/cgiSBS-info.pl
#!/usr/bin/env perl
use strict;
=head1 NAME
cgiConsole.pl
=head1 DESCRIPTION
=head1 SYNOPSIS
http://your.server.xxx/cgi/manage/cgiSBS-info.pl
=head1 ARGUMENTS
=over 4
=item config=sbsconfigfile.xml
the file
=back
=head1 OPTIONS
=over 4
=item help=1
=back
=head1 COPYRIGHT
Copyright (C) 2004-2005 Geneva Bioinformatics www.genebio.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
=head1 AUTHORS
Alexandre Masselot, www.genebio.com
=cut
BEGIN{
push @INC, '.';
}
BEGIN{
eval{
require DefEnv;
DefEnv::read('env.def');
};
}
use CGI;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use Pod::Usage;
use BatchSystem::SBS;
my $query=new CGI;
my $outputformat=$query->param('outputformat')||'text';
if($outputformat=~/^(text|json)$/){
print $query->header(-type=>'text/plain');
}elsif($outputformat=~/^(xml)$/){
print $query->header(-type=>'xml');
}elsif($outputformat=~/^(html)$/){
print $query->header(-type=>'text/html');
}
my $configfile=$query->param('config');
unless ($configfile){
require Phenyx::Config::GlobalParam;
Phenyx::Config::GlobalParam::readParam();
$configfile=Phenyx::Config::GlobalParam::get('phenyx.batch.configfile');
}
print STDERR "configfile=[$configfile]\n";
die "no configfile could be detected ([config] argument for example)" unless $configfile;
my $sbs=BatchSystem::SBS->new;
$sbs->readConfig(file=>$configfile);
$sbs->scheduler->__joblist_pump();
$sbs->scheduler->resourcesStatus_init();
$sbs->scheduler->queuesStatus_init();
my @request=$query->param('request');
unless (@request){
print $sbs->scheduler;
exit(0);
}
my @schedRequest;
my @batchRequest;
foreach (@request){
foreach (split /,/){
if(/scheduler\.(.*)/){
push @schedRequest, $1;
next;
}
if (/batchsystem\.(.*)/){
push @batchRequest, $1;
next;
}
die "unknown request [$_]";
}
}
my %htot;
if(@schedRequest){
my $h=$sbs->scheduler->dataRequest(request=>join(',', @schedRequest));
$htot{scheduler}=$h;
}
if(@batchRequest){
my $h=$sbs->dataRequest(request=>join(',', @batchRequest));
$htot{batchsystem}=$h;
}
if(lc($outputformat) eq 'json'){
require JSON;
print JSON::objToJson(\%htot,{pretty => 1, indent => 2});
}