LSF-Base
view release on metacpan or search on metacpan
$base = new LSF::Base;
#Cluster configuration
$info = $base->info or die $@;
@resources = $info->resTable;
$res = $resources[0];
$name = $res->name;
$desc = $res->des;
$vt = $res->valueType; # 0,1,2 (BOOLEAN, NUMERIC, STRING)
$ot = $res->orderType; # 0,1,2 (INCR, DECR, NA)
$flags = $res->flags; # RESF_BUILTIN | RESF_*
$int = $res->interval; #seconds
@types = $info->hostTypes
@models = $info->hostModels;
@archs = $info->hostArchs;
@narch = $info->modelRefs;
@factors = $info->cpuFactor;
$n_index = $info->numIndx;
$n_usr = $info->numUsrIndx;
$myhost = $base->getmyhostname;
$cluster = $base->getclustername;
$master = $base->getmastername($cluster);
$type = $base->gethosttype($host);
$model = $base->gethostmodel($host);
$factor = $base->gethostfactor($host);
$factor = $base->getmodelfactor($model);
@hosts = qw(skynet alpha60 wopr ghostwheel);
# passing in @hosts restricts the results to the listed
# hosts.
@hostinfo = $base->gethostinfo($resreq, \@hosts, $options);
#return information on all hosts.
@hostinfo = $base->gethostinfo($resreq, NULL, $options);
$hi = $hostinfo[0];
$name = $hi->hostName;
$type = $hi->hostType;
$model = $hi->hostModel;
$factor = $hi->cpuFactor;
$max_cpus = $hi->maxCpus;
$max_mem = $hi->maxMem;
$max_swap = $hi->maxSwap;
$max_tmp = $hi->maxTmp;
$ndisks = $hi->nDisks;
@resources = $hi->resources;
$windows = $hi->windows;
@threshold = $hi->busyThreshold;
$is_server = $hi->isServer;
$licensed = $hi->licensed;
$rex_pri = $hi->rexPriority;
$lic_feat = $hi->licFeaturesNeeded;
@params = qw( LSF_SERVERDIR LSF_CONFDIR LSF_SERVER_HOSTS ); # ...
%env = $base->readconfenv(\@params, $ENV{LSF_ENVDIR});
#load information and placement functions
@hostload = $base->load($resreq, $numhosts, $options, $fromhost );
@hostload = $base->loadofhosts( $resreq, $numhosts, $options, $fromhost, \@hosts);
$hl = $hostload[0];
$name = $hl->hostName;
@status = $hl->status
$bool = ISUNAVAIL(\@status);
$bool = ISBUSY(\@status);
$bool = ISBUSYON(\@status,$index);
$bool = ISLOCKEDU(\@status);
$bool = ISLOCKEDW(\@status);
$bool = ISLOCKED(\@status);
$bool = ISRESDOWN(\@status);
$bool = ISSBDDOWN(\@status);
$bool = ISUNLICENSED(\@status);
$bool = ISOK(\@status);
$bool = ISOKNRES(\@status);
@where = $base->placereq( $resreq, $number, $options, $fromhost);
@where = $base->placeofhosts( $resreq, $number, $options, $fromhost, \@hosts);
$place{alpha60} = 3;
$place{skynet} = 2;
$base->loadadj($resreq, \%place) or die $@;
#Task list manipulation
$resreq = $base->resreq($task);
($bool, $resreq) = $base->eligible($task, $mode);
$base->insertrtask($task);
$base->insertltask($task);
$base->deletertask($task);
$base->deleteltask($task);
@remote = $base->listrtask($sortflag);
@local = $base->listltask($sortflag);
# Remote Execution and task control functions
$ports = $base->initrex($numports, $options); # or KEEPUID
$nvcsw = $ru->nvcsw;
$nivcsw = $ru->nivcsw;
$base->rkill($tid, $signal) or die $@;
$base->rsetenv($host, \@env) or die $@;
$base->chdir($host, $path) or die $@;
$base->stdinmode($remote) or die $@;
@tids = $base->getstdin($on, $max);
$base->setstdin($on, \@tids) or die $@;
$base->stoprex or die $@;
$base->donerex or die $@;
$socket = ls_conntaskport($tid);
# Remote file operations
$rfd = $base->ropen($host, $filename, $flags, $mode) or die $@;
$base->rclose($rfd) or die $@;
$bytes = $base->rwrite($rfd, $buf, $len);
$bytes = $base->rread($rfd, $buf, $len );
$offset = $base->rlseek($rfd, $offset, $whence );
@stat = $base->rfstat(rfd);
@stat = $base->rstat($host, $path);
$host = $base->getmnthost($file);
$host = $base->rgetmnthost($host, $file);
$base->rfcontrol(RF_CMD_MAXHOSTS, $max);
$base->rfcontrol(RF_CMD_TERMINATE, $hostname) or die $@;
$base->lockhost($duration) or die $@;
$base->unlockhost() or die $@;
$base->limcontrol($hostname, $opcode) or die $@;
$base->rescontrol($hostname, $opcode, $data) or die $@;
$base->perror($message);
$base->sysmsg;
$base->errno;
$base->errlog(FILE, $msg);
$base->fdbusy($fd);
=head1 DESCRIPTION
LSF Base provides basic load sharing functionality consisting of the
following services: Cluster configuration information, Load
information and placement advice, Task list manipulation, Remote
execution and task control, Remote file operations, Administration,
and Error handling.
This library is designed to be used with LSF version 3.2 or LSF
4.0. Please see the "LSF Programmer's guide" and the LSF man pages for
detailed documentation of this API.
The data structures used in the API have been wrapped in Perl objects
for ease of use. The functions set $@ and $? where appropriate, or you
can use the lserrno, sysmsg, and perror functions if you want.
The perl version of this API has been modified to some extent to act
more "perlish" than the straightforward C API. For instance, return
values have been changed to more closely match what a Perl programmer
expects from a function. Other deviations from the original are noted
in the documentation.
=head1 AUTHOR
Paul Franceus, Capita Technologies, Inc., paul@capita.com
=head1 SEE ALSO
perl(1).
LSF::Batch
LSF Programmer's guide
lslib(3)
LSF man pages for each function.
=cut
( run in 0.364 second using v1.01-cache-2.11-cpan-39bf76dae61 )