AC-MrGamoo
view release on metacpan or search on metacpan
lib/AC/MrGamoo.pm view on Meta::CPAN
allow 192.168.10.0/24
=item seedpeer
specify initial peers to contact when starting. the author generally
specifies 2 on the east coast, and 2 on the west coast.
seedpeer 192.168.10.11:3503
seedpeer 192.168.10.12:3503
=item secret
specify a secret key used to encrypt data transfered between
systems in different datacenters.
secret squeamish-ossifrage
=item syslog
specify a syslog facility for log messages.
syslog local5
=item basedir
local directory to store files
basedir /home/data
=item debug
enable debugging for a particular section
debug job
=back
=head1 BUGS
Too many to list here.
=head1 SEE ALSO
lib/AC/MrGamoo/Client.pm view on Meta::CPAN
my $me = bless {
traceinfo => $trace,
}, $class;
$me->{fdebug} = $cfg->{debug} ? sub{ print STDERR "@_\n" } : sub {};
# compile job
my $mr = AC::MrGamoo::Submit::Compile->new( $from => $src );
$me->{program} = $mr;
# merge job %config section with passed in config
$mr->add_config($cfg);
return $me;
}
sub get_config_param {
my $me = shift;
$me->{program}->get_config_param(@_);
}
lib/AC/MrGamoo/Client.pm view on Meta::CPAN
sub submit {
my $me = shift;
my $seed = shift; # [ "ipaddr:port", ... ]
my $mr = $me->{program};
my $r = AC::MrGamoo::Submit::Request->new( $mr );
$r->{eu_print_stderr} = sub { print STDERR "@_\n" };
$r->{eu_print_stdout} = sub { print STDERR "@_\n" };
# run init section
my $h_init = $mr->get_code( 'init' );
my $initres = ($h_init ? $h_init->{code}() : undef) || {};
$me->{id} = unique();
my $req = AC::MrGamoo::Protocol->encode_request( {
type => 'mrgamoo_jobcreate',
msgidno => $^T,
want_reply => 1,
},{
jobid => $me->{id},
lib/AC/MrGamoo/Submit/Compile.pm view on Meta::CPAN
sub _compile_block {
my $me = shift;
my $tag = shift;
my $b = AC::MrGamoo::Submit::Compile::Block->new();
$b->{code} = $me->_lineno_info();
while(1){
my $line = $me->_next();
$me->_die("end of file reached looking for end of $tag section") unless defined $line;
last if $line =~ m|^</%$tag>\s*$|;
my($tag) = $line =~ m|^<%(.*)>\s*$|;
if( $BLOCK{$tag} eq 'simple' ){
$b->{$tag} .= $me->_compile_block_simple( $tag );
$b->{code} .= $me->_lineno_info();
}elsif( $BLOCK{$tag} eq 'config' ){
$b->{$tag} = $me->_compile_config( $tag );
}elsif( $tag ){
lib/AC/MrGamoo/Submit/Compile.pm view on Meta::CPAN
}
sub _compile_block_simple {
my $me = shift;
my $tag = shift;
my $b = $me->_lineno_info();
while(1){
my $line = $me->_next();
$me->_die("end of file reached looking for end of $tag section") unless defined $line;
last if $line =~ m|^</%$tag>\s*$|;
$b .= $line;
}
return $b;
}
sub _compile_config {
my $me = shift;
my $tag = shift;
my $c = {};
while(1){
my $line = $me->_next();
$me->_die("end of file reached looking for end of '$tag' section") unless defined $line;
return $c if $line =~ m|^</%$tag>\s*$|;
$line =~ s/^\s+//;
$line =~ s/\s+$//;
my($k, $v) = split /\s+=>\s*/, $line, 2;
$c->{$k} = $v;
}
}
sub _add_block {
my $me = shift;
my $tag = shift;
my $blk = shift;
my $d = $COMPILE{$tag};
if( $d->{multi} ){
push @{$me->{content}{$tag}}, $blk;
}else{
$me->_die("redefinition of '$tag' section") if $me->{content}{$tag};
$me->{content}{$tag} = $blk;
}
}
sub add_config {
my $me = shift;
my $cfg = shift;
$me->_add_config('config', $cfg);
}
lib/AC/MrGamoo/Submit/Compile.pm view on Meta::CPAN
my $me = shift;
my $tag = shift;
my $cfg = shift;
my $d = $COMPILE{$tag};
if( $d->{multi} ){
# merge
@{ $me->{content}{$tag} }{ keys %$cfg } = values %$cfg;
}else{
$me->_die("redefinition of '$tag' section") if $me->{content}{$tag};
$me->{content}{$tag} = $cfg;
}
}
sub set_initres {
my $me = shift;
my $ir = shift;
$me->{initres} = $ir;
}
lib/AC/MrGamoo/Submit/Compile.pm view on Meta::CPAN
return $me->{content}{config}{$k} = $v;
}
sub _check {
my $me = shift;
for my $s (keys %COMPILE){
next unless $COMPILE{$s}{required};
next if $me->{content}{$s};
$me->_die("missing required section '$s'");
}
1;
}
1;
lib/AC/MrGamoo/Task/Running.pm view on Meta::CPAN
use AC::MrGamoo::MySelf;
use AC::Daemon;
use Digest::SHA1 'sha1';
use Digest::MD5 'md5';
use File::Path;
use Sys::Syslog;
use Socket;
use JSON;
use strict;
my $STATUSTIME = 5; # seconds
my $MAXRUN = 3600; # override with %attr maxrun
my $SORTPROG = '/usr/bin/sort'; # override with %attr sortprog or config file
my $GZPROG = '/usr/bin/gzcat'; # override with %attr gzprog or config file
# in child process
sub _start_task {
my $me = shift;
debug("start child task");
$^T = time();
( run in 0.795 second using v1.01-cache-2.11-cpan-39bf76dae61 )