cleanup CPE poller to use new H1:: modules
[APKPM.git] / lib / APKPM / CPE.pm
index 2aa4b29..a790279 100644 (file)
@@ -9,6 +9,7 @@ use Net::Ping;
 
 use lib 'lib';
 use H1::EasyGateway;
+use H1::Davolink;
 
 with 'APKPM::Gearman::Client';
 with 'APKPM::Gearman';
@@ -47,7 +48,7 @@ sub poll : Job : Encode(e_json) {
 
                my $vendor = $1;
 
-               $taskset->add_task('CPE_ping', "$ip $username $vendor", {
+               $taskset->add_task('CPE_info', "$ip $username $vendor", {
                        on_complete => sub { push @$results, ${$_[0]} }
                });
                $redis->sadd('CPE.queued' => $ip);
@@ -77,7 +78,7 @@ sub poll : Job : Encode(e_json) {
        return $poll;
 }
 
-sub ping : Job : Decode(d_array) : Encode(e_json) {
+sub info : Job : Decode(d_array) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
 
        my ( $ip, $username, $vendor ) = @$workload;
@@ -107,31 +108,34 @@ sub ping : Job : Decode(d_array) : Encode(e_json) {
        });
 
        if ( $vendor =~ m/SAMSUNG/ ) {
-               $redis->sadd( 'CPE.Davolink.queued' => $username );
-               $self->do( 'Davolink_info', "$ip $username adsl" );
+               $vendor = 'Davolink';
        } elsif ( $vendor =~ m/zte/ ) {
-               $redis->sadd( 'CPE.EasyGateway.queued' => $ip );
+               $vendor = 'EasyGateway';
+       } else {
+               $redis->sadd( 'CPE.skipped' => $username );
+               $vendor = undef;
+       }
 
-               my $ret = eval { H1::EasyGateway->info( $ip ) };
+       if ( $vendor ) {
+               $redis->sadd( "CPE.$vendor.queued" => $ip );
 
-               if ( $ret ) {
+               my $module = 'H1::' . $vendor;
+               my $ret = eval { $module->info( $ip ) };
+
+               warn "# $module ",dump($ret);
 
+               if ( $ret ) {
                        $self->do_background_json( 'Store_insert', {
-                               _table => 'easygateway',
+                               _table => $vendor,
                                ip => $ip,
-                               username => delete $ret->{customerName},
+                               username => $username,
                                timestamp => $self->datetime_now,
                                h => $self->to_hstore( $ret ),
                        });
-
-                       $redis->sadd( 'CPE.EasyGateway.ok' => $ip );
-
+                       $redis->sadd( "CPE.$vendor.ok" => $ip );
                } else {
-                       $redis->sadd( 'CPE.EasyGateway.error' => $ip );
+                       $redis->sadd( "CPE.$vendor.error" => $ip );
                }
-
-       } else {
-               $redis->sadd( 'CPE.skipped' => $username );
        }
 
        return { ip => $ip, rtt => $rtt };