From d461fcd30482d43f554eb3039a85bd6ead569f2a Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 13 Mar 2011 14:49:51 +0100 Subject: [PATCH] username, ip are required for ADSL storage --- lib/APKPM/Davolink.pm | 3 ++- lib/APKPM/Store.pm | 13 ++++++++++--- t/Store.t | 22 ++++++++++++---------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/APKPM/Davolink.pm b/lib/APKPM/Davolink.pm index b6c62de..0413679 100644 --- a/lib/APKPM/Davolink.pm +++ b/lib/APKPM/Davolink.pm @@ -18,9 +18,10 @@ sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_array) : Encode(e_ my ( $self, $job, $workload ) = @_; warn "# workload = ", dump $workload; my $cpeip = shift @$workload; + my $username = shift @$workload; my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd')); $cpeconnect->connect(); - my $ret = { ip => $cpeip }; + my $ret = { ip => $cpeip, username => $username }; foreach my $param ( @$workload ) { if ( $param =~ m/uptime/i ) { $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime"); diff --git a/lib/APKPM/Store.pm b/lib/APKPM/Store.pm index e8eeabd..3dd8ad6 100644 --- a/lib/APKPM/Store.pm +++ b/lib/APKPM/Store.pm @@ -18,18 +18,25 @@ sub process_name { sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) { my ( $self, $job, $workload ) = @_; - warn "# ADSL ",dump($workload); + my $dbh = DBI->connect_cached('DBI:Pg:dbname=apkpm','','', { RaiseError => 1, AutoCommit => 1, }); - my @c = keys %$workload; + my $h = $workload->{ADSL} || die "no ADSL in ",dump $workload; + foreach my $c ( qw(ip username) ) { + $h->{$c} = $workload->{$c} || die "no $c in ",dump $workload; + } + + warn "# ADSL ", dump $h; + + my @c = keys %$h; my $sql = 'INSERT INTO adsl (' . join(',',@c) . ') values (' . join(',', map { '?' } 0 .. $#c) . ')'; warn $sql; my $sth = $dbh->prepare($sql); - $sth->execute( map { $workload->{$_} } @c ); + $sth->execute( map { $h->{$_} } @c ); } 1; diff --git a/t/Store.t b/t/Store.t index c06642e..7d1382e 100755 --- a/t/Store.t +++ b/t/Store.t @@ -14,16 +14,18 @@ ok my $o = APKPM::Store->new, 'new'; ok my $r = $o->ADSL('job',{ ip => '127.0.0.1', username => 'nobody', -ATTNRX => "36.5", -ATTNTX => "17.8", -MAXRX => 13500, -MAXTX => 880, -PWRRX => "0.0", -PWRTX => "12.6", -RX => 8500, -SNRRX => "11.4", -SNRTX => "16.0", -TX => 798, +ADSL => { + ATTNRX => "36.5", + ATTNTX => "17.8", + MAXRX => 13500, + MAXTX => 880, + PWRRX => "0.0", + PWRTX => "12.6", + RX => 8500, + SNRRX => "11.4", + SNRTX => "16.0", + TX => 798, +} }), 'ADSL'; diag dump($r); -- 2.20.1