Ubic-Service-ZooKeeper

 view release on metacpan or  search on metacpan

lib/Ubic/Service/ZooKeeper.pm~  view on Meta::CPAN

        ### advanced zookeeper config
        dataLogDir             => $opt_str,
        globalOutstandingLimit => $opt_num,
        preAllocSize           => $opt_num,
        snapCount              => $opt_num,
        traceFile              => $opt_str,
        maxClientCnxns         => $opt_num,
        clientPortAddress      => $opt_str,
        minSessionTimeout      => $opt_num,
        maxSessionTimeout      => $opt_num,

        ### zookeeper cluster options
        electionAlg  => $opt_num,
        initLimit    => $opt_num,
        leaderServes => $opt_str,
        # num, hostname, port and weight of each server
        servers      => { type => HASHREF, default => {} },
        groups       => { type => HASHREF, default => {} },
        syncLimit    => $opt_num,
        cnxTimeout   => $opt_num,

        ### unsafe zookeeper options
        forceSync        => $opt_str,
        skipACL          => $opt_str,


        # zookeeper myid
        myid => { %$opt_num, default => 1 },


        # ubic specific options
        status        => { type => CODEREF, optional => 1 },
        user          => $opt_str,
        ubic_log      => $opt_str,
        stdout        => $opt_str,
        stderr        => $opt_str,
        pidfile       => $opt_str,
        port          => $opt_num,

        gen_cfg        => $opt_str,
        java           => { %$opt_str, default => 'java' },
        java_cp        => { %$opt_str, default => '' },
        jmx_enable     => { type => BOOLEAN, default => 1 },
        jmx_local_only => { type => BOOLEAN, default => 0 },
        zoo_log_dir    => { %$opt_str, default => '/var/log/zookeeper' },
        zoo_log4j_prop => { %$opt_str, default => 'INFO,ROLLINGFILE' },
        zoo_main_class => {
            %$opt_str,
            default => 'org.apache.zookeeper.server.quorum.QuorumPeerMain'
        },
        java_opts      => { type => SCALAR, default => '' },
    });

    if (!$params->{pidfile}) {
        $params->{pidfile} = '/tmp/zookeeper.' . $params->{clientPort} . '.pid';
    }
    if (!$params->{gen_cfg}) {
        $params->{gen_cfg} = '/tmp/zoo.' . $params->{clientPort} . '.cfg';
    }

    return bless $params => $class;
}


sub bin {
    my $self = shift;

    my $cmd = '';
    $cmd = $self->{java} . " " . $self->{java_opts} . " " .
           "-cp " . $self->{java_cp} . " ";
    if ($self->{jmx_enable}) {
        $cmd .= "-Dcom.sun.management.jmxremote ";
        unless ($self->{jmx_local_only}) {
            $cmd .= "-Dcom.sun.management.jmxremote.local.only=false ";
        }
    }
    $cmd .= "-Dzookeeper.log.dir=$self->{zoo_log_dir} ";
    $cmd .= "-Dzookeeper.root.logger=$self->{zoo_log4j_prop} ";
    $cmd .= $self->{zoo_main_class} . " ";
    $cmd .= $self->gen_cfg;

    return [ $cmd ];
}

sub _zookeeper_cfg_params_list {
    return qw/clientPort dataDir tickTime dataLogDir globalOutstandingLimit
              preAllocSize snapCount traceFile maxClientCnxns clientPortAddress
              minSessionTimeout maxSessionTimeout electionAlg initLimit
              leaderServes servers groups syncLimit cnxTimeout forceSync skipACL/;
}

=item C<create_cfg_file()>

Generates .cfg file basing on constuctor params.

=cut

sub create_cfg_file {
    my $self = shift;

    my $fname = $self->gen_cfg;
    my $tmp_fname = $fname . ".tmp";

    my %params;
    foreach (_zookeeper_cfg_params_list()) {
        $params{$_} = $self->{$_} if defined($self->{$_});
    }
    my $servers = delete $params{servers};
    my $groups = delete $params{groups};

    open(my $tmp_fh, '>', $tmp_fname) or die "Can't open file [$tmp_fname]: $!";

    foreach my $p (sort keys %params) {
        my $v = $params{$p};
        print $tmp_fh "$p=$v\n";
    }
    print $tmp_fh "\n";

    foreach my $server_num (sort {$a <=> $b} keys %$servers) {
        my $s = $servers->{$server_num};
        my $server = $s->{server};

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.038 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )