use Redis;
use Net::Ping;
+use lib 'lib';
+use H1::EasyGateway;
+
with 'APKPM::Gearman::Client';
with 'APKPM::Gearman';
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 );
}
+++ /dev/null
-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;
--- /dev/null
+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;
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);