From: Dobrica Pavlinusic Date: Wed, 6 Jul 2011 11:43:27 +0000 (+0200) Subject: make EasyGateway stand-alone module called from CPE_ping X-Git-Url: http://git.rot13.org/?p=APKPM.git;a=commitdiff_plain;h=7bff12afddfd0c986328cd8202e425967de6b133 make EasyGateway stand-alone module called from CPE_ping --- diff --git a/lib/APKPM/CPE.pm b/lib/APKPM/CPE.pm index 8549ebe..2aa4b29 100644 --- a/lib/APKPM/CPE.pm +++ b/lib/APKPM/CPE.pm @@ -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 index 1ff40f2..0000000 --- a/lib/APKPM/EasyGateway.pm +++ /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 index 0000000..eed6d2a --- /dev/null +++ b/lib/H1/EasyGateway.pm @@ -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; diff --git a/t/EasyGateway.t b/t/EasyGateway.t index 66e80e5..618a9bb 100755 --- a/t/EasyGateway.t +++ b/t/EasyGateway.t @@ -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);