specify ZTEDSLAM (default) or ZTEMSAN in command line
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 May 2011 18:38:25 +0000 (20:38 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 May 2011 18:38:25 +0000 (20:38 +0200)
gearman_driver.pl
persistant_worker.pl

index 9d2c147..c2551ff 100755 (executable)
@@ -23,11 +23,11 @@ my $driver = Gearman::Driver->new(
                        min_processes => 1,
                },
                'APKPM::Poll::poll_ip_username' => {
-                       max_processes => 100,
+                       max_processes => 50,
                        min_processes => 1,
                },
                'APKPM::Ping::ping' => {
-                       max_processes => 100,
+                       max_processes => 50,
                },
                'APKPM::Davolink::info' => {
                        max_processes => 40,
index ccddc86..1478f4a 100755 (executable)
@@ -22,6 +22,10 @@ use Redis;
 
 use lib 'lib';
 use H1::ZTEDSLAM;
+use H1::ZTEMSAN;
+
+my $variant = $ARGV[0] || 'ZTEDSLAM';
+warn "variant: $variant\n";
 
 my $driver = Gearman::Driver->new(
        server   => 'localhost:4730',
@@ -34,7 +38,7 @@ my $w1 = 'Cog';
 my $worker = $w1->new();
 
 
-my $crm = $worker->do( 'CRM_search' => "TIP_UREDJAJA:ZTEDSLAM" );
+my $crm = $worker->do( 'CRM_search' => "TIP_UREDJAJA:$variant" );
 
 
 my $poll;
@@ -48,9 +52,10 @@ warn "# poll = ", dump($poll);
 
 foreach my $ip ( keys %$poll ) {
 
-       my $method = "ZTEDSLAM_$ip";
+       my $method = $variant . '_' . $ip;
 
-       my $zte = H1::ZTEDSLAM->new( ip => $ip );
+       my $module = 'H1::' . $variant;
+       my $zte = $module->new( ip => $ip );
 
        $driver->add_job({
                max_processes => 1, # FIXME increase?
@@ -77,10 +82,10 @@ foreach my $ip ( keys %$poll ) {
                my $redis = Redis->new;
 
                if ( $@ ) {
-                       $redis->sadd("ZTEDSLAM.error" => $@);
+                       $redis->sadd("$variant.error" => $@);
                        return { error => $@ };
                } else {
-                       $redis->sadd("ZTEDSLAM.ok" => $crm->{USERNAME});
+                       $redis->sadd("$variant.ok" => $crm->{USERNAME});
                }
 
                $self->do_background_json( 'Store_insert', {
@@ -106,14 +111,14 @@ $driver->add_job({
        max_processes => 1,
        min_processes => 1,
        worker          => $worker,
-       name            => 'poll_ZTEDSLAM',
+       name            => "poll_$variant",
        methods    => [ {
-               name            => 'poll_ZTEDSLAM',
+               name            => "poll_$variant",
                body   => sub {
 
                my ( $self, $job, $workload ) = @_;
 
-               my $crm = $self->do( 'CRM_search' => "TIP_UREDJAJA:ZTEDSLAM" );
+               my $crm = $self->do( 'CRM_search' => "TIP_UREDJAJA:$variant" );
 
                warn "# crm $crm";
 
@@ -123,43 +128,43 @@ $driver->add_job({
                my $seen;
 
                my $redis = Redis->new;
-               $redis->del( $_ ) foreach $redis->keys("ZTEDSLAM.*");
+               $redis->del( $_ ) foreach $redis->keys("$variant.*");
 
-               $redis->set( "ZTEDSLAM.start" => $self->datetime_now );
+               $redis->set( "$variant.start" => $self->datetime_now );
 
                foreach my $user ( @$crm ) {
                        my $ip   = $user->{IP_UREDAJA};
                        my $port = $user->{SHELF_SLOT_PORT};
 
                        if ( $ip !~ /$RE{net}{IPv4}/ ) {
-                               $redis->sadd("ZTEDSLAM.invalid.IP_UREDAJA" => $ip);
+                               $redis->sadd("$variant.invalid.IP_UREDAJA" => $ip);
                                next;
                        } elsif ( $port !~ m{\d+(/\d+)+} ) {
-                               $redis->sadd("ZTEDSLAM.invalid.PORT" => $port);
+                               $redis->sadd("$variant.invalid.PORT" => $port);
                                next;
                        } elsif ( $seen->{ $ip }->{ $port }++ ) {
-                               $redis->sadd("ZTEDSLAM.invalid.duplicate" => "$ip $port");
+                               $redis->sadd("$variant.invalid.duplicate" => "$ip $port");
                                next;
                        }
-                       $redis->sadd("ZTEDSLAM.queued" => "$ip $port");
-                       $redis->incr("ZTEDSLAM.ip.$ip");
+                       $redis->sadd("$variant.queued" => "$ip $port");
+                       $redis->incr("$variant.ip.$ip");
 
-                       my $name = 'ZTEDSLAM_' . $ip;
+                       my $name = $variant . '_' . $ip;
                        $taskset->add_task( $name, $self->e_json( $user ), {
-                               on_complete => sub { $redis->sadd("ZTEDSLAM.complete", "$ip $port") },
-                               on_fail     => sub { $redis->sadd("ZTEDSLAM.fail", "$ip $port") },
+                               on_complete => sub { $redis->sadd("$variant.complete", "$ip $port") },
+                               on_fail     => sub { $redis->sadd("$variant.fail", "$ip $port") },
                        } )
                }
 
                warn "# queue logouts";
                foreach my $ip ( keys %$seen ) {
-                       $taskset->add_task( "ZTEDSLAM_$ip", $self->e_json( { logout => 1 } ) );
+                       $taskset->add_task( $variant . '_' . $ip, $self->e_json( { logout => 1 } ) );
                }
 
                warn "# wait";
                $taskset->wait;
 
-               $redis->set( "ZTEDSLAM.finish" => $self->datetime_now );
+               $redis->set( "$variant.finish" => $self->datetime_now );
                warn "# seen ", dump($seen);
 
                my $ips = scalar keys %$seen;