make EasyGateway stand-alone module called from CPE_ping
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 6 Jul 2011 11:43:27 +0000 (13:43 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 6 Jul 2011 11:43:27 +0000 (13:43 +0200)
lib/APKPM/CPE.pm
lib/APKPM/EasyGateway.pm [deleted file]
lib/H1/EasyGateway.pm [new file with mode: 0644]
t/EasyGateway.t

index 8549ebe..2aa4b29 100644 (file)
@@ -7,6 +7,9 @@ use Data::Dump qw(dump);
 use Redis;
 use Net::Ping;
 
+use lib 'lib';
+use H1::EasyGateway;
+
 with 'APKPM::Gearman::Client';
 with 'APKPM::Gearman';
 
@@ -105,10 +108,28 @@ sub ping : Job : Decode(d_array) : Encode(e_json) {
 
        if ( $vendor =~ m/SAMSUNG/ ) {
                $redis->sadd( 'CPE.Davolink.queued' => $username );
-               $self->do_background( 'Davolink_info', "$ip $username adsl" );
+               $self->do( 'Davolink_info', "$ip $username adsl" );
        } elsif ( $vendor =~ m/zte/ ) {
                $redis->sadd( 'CPE.EasyGateway.queued' => $ip );
-               $self->do_background( 'EasyGateway_info', $ip );
+
+               my $ret = eval { H1::EasyGateway->info( $ip ) };
+
+               if ( $ret ) {
+
+                       $self->do_background_json( 'Store_insert', {
+                               _table => 'easygateway',
+                               ip => $ip,
+                               username => delete $ret->{customerName},
+                               timestamp => $self->datetime_now,
+                               h => $self->to_hstore( $ret ),
+                       });
+
+                       $redis->sadd( 'CPE.EasyGateway.ok' => $ip );
+
+               } else {
+                       $redis->sadd( 'CPE.EasyGateway.error' => $ip );
+               }
+
        } else {
                $redis->sadd( 'CPE.skipped' => $username );
        }
diff --git a/lib/APKPM/EasyGateway.pm b/lib/APKPM/EasyGateway.pm
deleted file mode 100644 (file)
index 1ff40f2..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-package APKPM::EasyGateway;
-
-use base qw(Gearman::Driver::Worker);
-use Moose;
-use Time::HiRes;
-use Data::Dump qw(dump);
-
-with 'APKPM::Config';
-with 'APKPM::Gearman::Client';
-with 'APKPM::Gearman';
-
-use Redis;
-use SOAP::Lite;
-
-sub prefix { 'EasyGateway_' }
-
-sub info : Job : Encode(e_json) {
-       my ( $self, $job, $workload ) = @_;
-       warn "# workload = ", dump $workload;
-
-       my $ip = $workload;
-
-       return { error => "invalid workload", expected => 'cpe.ip', workload => $workload } unless $ip;
-
-       my $ret;
-
-       my $soap = SOAP::Lite
-               ->service('http://10.99.0.74:9090/cpews/services/Cpe112DiagnosisSoapImpl?WSDL');
-
-       my $out = $soap->getWanDslStatus( "IP=$ip" );
-
-       $ret->{$_} = $out->{$_} foreach keys %$out;
-
-       my $out = $soap->getCpeBasicInfo( "IP=$ip" ); # mac, username, uptime
-
-       foreach ( keys %$out ) {
-               next unless defined $out->{$_}; # skip undef values
-               $ret->{$_} = $out->{$_};
-       }
-
-       $self->do_background_json( 'Store_insert', {
-               _table => 'easygateway',
-               ip => $ip,
-               username => $ret->{customerName},
-               timestamp => $self->datetime_now,
-               h => $self->to_hstore( $ret ),
-       });
-
-       my $redis = Redis->new;
-       $redis->sadd( 'CPE.EasyGateway.ok' => $ip );
-
-       return $ret;
-}
-
-1;
diff --git a/lib/H1/EasyGateway.pm b/lib/H1/EasyGateway.pm
new file mode 100644 (file)
index 0000000..eed6d2a
--- /dev/null
@@ -0,0 +1,31 @@
+package H1::EasyGateway;
+
+use Data::Dump qw(dump);
+
+use SOAP::Lite;
+
+sub info {
+       my ( $self, $ip ) = @_;
+
+       my $ret;
+
+       my $soap = SOAP::Lite
+               ->service('http://10.99.0.74:9090/cpews/services/Cpe112DiagnosisSoapImpl?WSDL');
+
+       my $out = $soap->getWanDslStatus( "IP=$ip" );
+
+       $ret->{$_} = $out->{$_} foreach keys %$out;
+
+       my $out = $soap->getCpeBasicInfo( "IP=$ip" ); # mac, username, uptime
+
+       foreach ( keys %$out ) {
+               next unless defined $out->{$_}; # skip undef values
+               $ret->{$_} = $out->{$_};
+       }
+
+       warn "# $ip = ",dump($ret);
+
+       return $ret;
+}
+
+1;
index 66e80e5..618a9bb 100755 (executable)
@@ -2,14 +2,12 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3;
+use Test::More tests => 2;
 use Data::Dump qw(dump);
 
 use lib 'lib';
 
-use_ok 'APKPM::EasyGateway';
+use_ok 'H1::EasyGateway';
 
-ok my $o = APKPM::EasyGateway->new, 'new';
-
-ok my $r = $o->info( 'job', $ARGV[0] || '10.16.4.239' ), 'info';
+ok my $r = H1::EasyGateway->info( $ARGV[0] || '10.16.4.239' ), 'info';
 diag dump($r);