NAME

AC::MrGamoo::MySelf - customize mrgamoo to your own environment

SYNOPSIS

emacs /myperldir/Local/MrGamoo/MySelf.pm
copy. paste. edit.

use lib '/myperldir';
my $m = AC::MrGamoo::D->new(
    class_myself        => 'Local::MrGamoo::MySelf',
);

DESCRIPTION

provide functions to override default behavior. you may define any or all of the following functions.

my_server_id

return a unique identity for this mrgamoo instance. typically, something similar to the server hostname.

sub my_server_id {
    return 'mrm@' . hostname();
}

my_datacenter

return the name of the local datacenter. mrgamoo will use this to determine which systems are local (same datacenter) and which are remote (different datacenter), and will tune various behaviors accordingly.

sub my_datacenter {
    my($domain) = hostname() =~ /^[\.]+\.(.*)/;
    return $domain;
}

Note: map/reduce jobs are extremely network intensive. it is not recommended to spread your servers out. you really want them all plugged into one big switch. one big fast switch.

my_network_info

return information about the various networks this server has.

sub my_network_info {
    my $public_ip = inet_ntoa(scalar gethostbyname(hostname()));
    my $privat_ip = inet_ntoa(scalar gethostbyname('internal-' . hostname()));


    return [
        # use this IP for communication with servers this datacenter (same natdom)
        { ip => $privat_ip, natdom => my_datacenter() },
        # otherwise use this IP
        { ip => $public_ip },
    ]
}

init

inialization function called at startup. typically used to lookup hostanmes, IP addresses, and such and store them in variables to make the above functions faster.

my $HOSTNAME;
my $DOMAIN;
sub init {
    $HOSTNAME = hostname();
    ($DOMAIN) = $HOSTNAME =~ /^[\.]+\.(.*)/;
}

BUGS

none. you write this yourself.

SEE ALSO

AC::MrGamoo

AUTHOR

You!